Merge branch 'zcwyTeacher' into 'master'
Zcwy teacher See merge request !40
@@ -16,13 +16,15 @@ VUE_APP_CESOURCE_BASE_API = '/socialApi'
|
||||
VUE_APP_STAT_BASE_API = '/statApi'
|
||||
|
||||
# BOE系统网址
|
||||
VUE_APP_BOE_WEB_URL = 'http://127.0.0.1'
|
||||
VUE_APP_BOE_WEB_URL = 'https://u-pre.boe.com'
|
||||
|
||||
# BOE 移动端url
|
||||
VUE_APP_BOE_MOBILE_URL = 'http://127.0.0.1:8082/mobile'
|
||||
# VUE_APP_BOE_MOBILE_URL = 'http://127.0.0.1:8082/mobile'
|
||||
VUE_APP_BOE_MOBILE_URL = 'https://u-pre.boe.com'
|
||||
|
||||
# File路径的基础url
|
||||
VUE_APP_FILE_BASE_URL = 'http://127.0.0.1:9090/cdn/upload'
|
||||
# VUE_APP_FILE_BASE_URL = 'http://127.0.0.1:9090/cdn/upload'
|
||||
VUE_APP_FILE_BASE_URL='https://u-pre.boe.com/upload'
|
||||
|
||||
# File路径的基础url的相对路径,加此项是为了不影响之前的路径配置
|
||||
VUE_APP_FILE_RELATIVE_PATH = '/upload'
|
||||
@@ -44,7 +46,8 @@ VUE_APP_MANAGER_API_PATH='/manageApi'
|
||||
VUE_CLI_BABEL_TRANSPILE_MODULES = true
|
||||
|
||||
# scorm课件的播放url地址
|
||||
VUE_APP_SCORM_URL = 'http://localhost:9083/scorm-player'
|
||||
# VUE_APP_SCORM_URL = 'http://localhost:9083/scorm-player'
|
||||
VUE_APP_SCORM_URL = 'https://u-pre.boe.com/newscorm/scorm-player'
|
||||
|
||||
#案例组织领域类型
|
||||
VUE_APP_CASE_TYPE = '90'
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
computed: {
|
||||
...mapGetters(['userInfo'])
|
||||
},
|
||||
mounted(){
|
||||
mounted() {
|
||||
//从状态值中取,因为登录处理,所以移动watch中
|
||||
// console.log(this.userInfo);
|
||||
// if(this.userInfo && this.userInfo.name!=''){
|
||||
|
||||
35
src/api/modules/grateful.js
Normal file
@@ -0,0 +1,35 @@
|
||||
// import ajax from '@/utils/xajax.js'
|
||||
import ajax from '../ajax';
|
||||
const baseURL = '/activityApi';
|
||||
|
||||
//notice新增
|
||||
const saveOpinion = (data = {}) => ajax.postJson(baseURL, '/xboe/m/boe/opinion/save', data);
|
||||
//工具列表
|
||||
const toolList = (data = {}) => ajax.postJson(baseURL, '/xboe/m/boe/tools/list', data);
|
||||
//工具下载
|
||||
const toolDown = ({ urlStr, fileName }) => ajax.get('/systemapi', `/xboe/sys/xuploader/url/download?urlStr=${urlStr}&fileName=${fileName}`);
|
||||
//通知列表
|
||||
const noticeList = (data = {}) => ajax.postJson(baseURL, '/xboe/m/boe/notice/list', data);
|
||||
//通知列表
|
||||
const courselList = (data = {}) => ajax.postJson(baseURL, '/xboe/m/boe/course/list', data);
|
||||
//通知根据id查询
|
||||
const noticeDataById = (id) => ajax.get(baseURL, `/xboe/m/boe/notice/getDataById?id=${id}`);
|
||||
//教师列表
|
||||
const teachersList = (data = {}) => ajax.postJson(baseURL, '/xboe/m/boe/teachers/list', data);
|
||||
//教师列表
|
||||
const carouselList = (data = {}) => ajax.postJson(baseURL, '/xboe/m/boe/rotation/list', data);
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
export {
|
||||
saveOpinion,
|
||||
toolList,
|
||||
toolDown,
|
||||
noticeList,
|
||||
noticeDataById,
|
||||
courselList,
|
||||
teachersList,
|
||||
carouselList
|
||||
}
|
||||
BIN
src/assets/images/grateful/empBanner.png
Normal file
|
After Width: | Height: | Size: 141 KiB |
BIN
src/assets/images/grateful/famousTeacher.png
Normal file
|
After Width: | Height: | Size: 362 KiB |
BIN
src/assets/images/grateful/gratefulFooter.png
Normal file
|
After Width: | Height: | Size: 364 KiB |
BIN
src/assets/images/grateful/gratefulbanner.png
Normal file
|
After Width: | Height: | Size: 609 KiB |
BIN
src/assets/images/grateful/logo.png
Normal file
|
After Width: | Height: | Size: 3.3 KiB |
BIN
src/assets/images/grateful/noticGift.png
Normal file
|
After Width: | Height: | Size: 4.8 KiB |
BIN
src/assets/images/grateful/notice.png
Normal file
|
After Width: | Height: | Size: 90 KiB |
BIN
src/assets/images/grateful/noticeBanner.png
Normal file
|
After Width: | Height: | Size: 341 KiB |
BIN
src/assets/images/grateful/noticeBgc.png
Normal file
|
After Width: | Height: | Size: 110 KiB |
BIN
src/assets/images/grateful/noticeLogo.png
Normal file
|
After Width: | Height: | Size: 2.9 KiB |
BIN
src/assets/images/grateful/opinionBanner.png
Normal file
|
After Width: | Height: | Size: 525 KiB |
BIN
src/assets/images/grateful/suggestion.png
Normal file
|
After Width: | Height: | Size: 542 B |
BIN
src/assets/images/grateful/team.png
Normal file
|
After Width: | Height: | Size: 310 KiB |
BIN
src/assets/images/grateful/tool1.png
Normal file
|
After Width: | Height: | Size: 3.0 KiB |
BIN
src/assets/images/grateful/tool2.png
Normal file
|
After Width: | Height: | Size: 4.1 KiB |
BIN
src/assets/images/grateful/tool3.png
Normal file
|
After Width: | Height: | Size: 4.3 KiB |
BIN
src/assets/images/grateful/toolBanner.png
Normal file
|
After Width: | Height: | Size: 522 KiB |
BIN
src/assets/images/grateful/toolBgc.png
Normal file
|
After Width: | Height: | Size: 165 KiB |
@@ -396,6 +396,13 @@ body {margin: 0px;padding: 0px;}
|
||||
.xcontent{width: 1100px;}
|
||||
.xcontent2{
|
||||
width: 1100px;
|
||||
.list {
|
||||
grid-template-columns: repeat(4, 255px);
|
||||
}
|
||||
.toolImg{
|
||||
width: 80px;
|
||||
height: 80px;
|
||||
}
|
||||
}
|
||||
.home-page-right{
|
||||
width: 330px;
|
||||
@@ -470,6 +477,13 @@ body {margin: 0px;padding: 0px;}
|
||||
.xcontent{width: 1366px;}
|
||||
.xcontent2{
|
||||
width: 1366px;
|
||||
//后添加的教师节
|
||||
.list {
|
||||
grid-template-columns: repeat(4, 332px);
|
||||
}
|
||||
.liList{
|
||||
margin-top: 10px;
|
||||
}
|
||||
}
|
||||
.rankimg{
|
||||
width:76px;
|
||||
@@ -513,6 +527,12 @@ body {margin: 0px;padding: 0px;}
|
||||
.xcontent{width: 1690px;}
|
||||
.xcontent2{
|
||||
width: 1690px;
|
||||
.list {
|
||||
grid-template-columns: repeat(4, 400px);
|
||||
}
|
||||
.liList{
|
||||
margin-top: 24px;
|
||||
}
|
||||
}
|
||||
.rankimg{
|
||||
width:86px;
|
||||
@@ -555,6 +575,12 @@ body {margin: 0px;padding: 0px;}
|
||||
.xcontent{width: 1880px;}
|
||||
.xcontent2{
|
||||
width: 1846px;
|
||||
.list {
|
||||
grid-template-columns: repeat(4, 445px);
|
||||
}
|
||||
.liList{
|
||||
margin-top: 32px;
|
||||
}
|
||||
}
|
||||
.home-page-right{
|
||||
width: 395px;
|
||||
|
||||
@@ -1,12 +1,8 @@
|
||||
<template>
|
||||
<!--用于显示课程的图片-->
|
||||
<div style="border-radius: 5px;" class="img-box" id="img-box">
|
||||
<el-image
|
||||
style="background-color: #eeeeee;border-radius: 5px;"
|
||||
:style="`width:${width};height:${height};`"
|
||||
fit="fill "
|
||||
:src="imageUrl"
|
||||
>
|
||||
<div style="border-radius: 5px;" class="img-box" id="img-box">
|
||||
<el-image style="background-color: #eeeeee;border-radius: 5px;" :style="`width:${width};height:${height};`"
|
||||
fit="fill " :src="imageUrl">
|
||||
<div slot="error" class="image-slot">
|
||||
<i class="el-icon-picture-outline"></i>
|
||||
</div>
|
||||
@@ -32,46 +28,45 @@ export default {
|
||||
props: {
|
||||
course: {
|
||||
type: Object,
|
||||
default: () => {},
|
||||
default: () => { },
|
||||
},
|
||||
height: {
|
||||
type: String,
|
||||
default: "100%",
|
||||
},
|
||||
text:{
|
||||
text: {
|
||||
type: Boolean,
|
||||
default:true,
|
||||
default: true,
|
||||
},
|
||||
width: {
|
||||
type: String,
|
||||
default: "100%",
|
||||
},
|
||||
},
|
||||
|
||||
computed: {
|
||||
name(){
|
||||
let name = '';
|
||||
if(this.course && this.course.name && this.course.name !== '') {
|
||||
name = this.course.name.replace('color:#FF0000','color:#fff');
|
||||
}
|
||||
if(this.course && this.course.courseName && this.course.courseName !== '') {
|
||||
name = this.course.courseName.replace('color:#FF0000','color:#fff');
|
||||
}
|
||||
if(this.course && this.course.title && this.course.title !== '') {
|
||||
name = this.course.title.replace('color:#FF0000','color:#fff');
|
||||
}
|
||||
return name;
|
||||
// course.name || course.courseName || course.title
|
||||
},
|
||||
name() {
|
||||
let name = '';
|
||||
if (this.course && this.course.name && this.course.name !== '') {
|
||||
name = this.course.name.replace('color:#FF0000', 'color:#fff');
|
||||
}
|
||||
if (this.course && this.course.courseName && this.course.courseName !== '') {
|
||||
name = this.course.courseName.replace('color:#FF0000', 'color:#fff');
|
||||
}
|
||||
if (this.course && this.course.title && this.course.title !== '') {
|
||||
name = this.course.title.replace('color:#FF0000', 'color:#fff');
|
||||
}
|
||||
return name;
|
||||
// course.name || course.courseName || course.title
|
||||
},
|
||||
imageUrl() {
|
||||
this.isShow = false;
|
||||
if(this.course && this.course.coverImg && this.course.coverImg.startsWith('http')) {
|
||||
if (this.course && this.course.coverImg && this.course.coverImg.startsWith('http')) {
|
||||
return this.course.coverImg;
|
||||
}
|
||||
if(this.course && this.course.courseImage && this.course.courseImage.startsWith('http')) {
|
||||
if (this.course && this.course.courseImage && this.course.courseImage.startsWith('http')) {
|
||||
return this.course.courseImage;
|
||||
}
|
||||
if (this.course && this.course.coverImg && this.course.coverImg != "") {
|
||||
if (this.course && this.course.coverImg && this.course.coverImg != "") {
|
||||
return this.fileBaseUrl + this.course.coverImg;
|
||||
} else if (
|
||||
this.course &&
|
||||
@@ -122,7 +117,7 @@ export default {
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
imageError() {},
|
||||
imageError() { },
|
||||
},
|
||||
};
|
||||
</script>
|
||||
@@ -130,43 +125,56 @@ export default {
|
||||
<style lang="scss" scoped>
|
||||
.text {
|
||||
text-shadow: 0px 0px 2px #ffffff;
|
||||
span{
|
||||
|
||||
span {
|
||||
color: #ffffff !important;
|
||||
}
|
||||
}
|
||||
.image-slot{
|
||||
display: flex;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
|
||||
.image-slot {
|
||||
display: flex;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
}
|
||||
|
||||
.img-box {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
position: relative;
|
||||
-moz-user-select: none; /*火狐*/
|
||||
-webkit-user-select: none; /*webkit浏览器*/
|
||||
-ms-user-select: none; /*IE10*/
|
||||
-khtml-user-select: none; /*早期浏览器*/
|
||||
-moz-user-select: none;
|
||||
/*火狐*/
|
||||
-webkit-user-select: none;
|
||||
/*webkit浏览器*/
|
||||
-ms-user-select: none;
|
||||
/*IE10*/
|
||||
-khtml-user-select: none;
|
||||
/*早期浏览器*/
|
||||
user-select: none;
|
||||
|
||||
p {
|
||||
display: -webkit-box;
|
||||
// white-space:pre-wrap;
|
||||
overflow: hidden;
|
||||
// text-overflow:ellipsis;
|
||||
word-break:break-all;
|
||||
word-break: break-all;
|
||||
-webkit-box-orient: vertical;
|
||||
-webkit-line-clamp: 2;
|
||||
color: #ffffff;
|
||||
position: absolute;
|
||||
padding-right: 10px;
|
||||
-moz-user-select: none; /*火狐*/
|
||||
-webkit-user-select: none; /*webkit浏览器*/
|
||||
-ms-user-select: none; /*IE10*/
|
||||
-khtml-user-select: none; /*早期浏览器*/
|
||||
-moz-user-select: none;
|
||||
/*火狐*/
|
||||
-webkit-user-select: none;
|
||||
/*webkit浏览器*/
|
||||
-ms-user-select: none;
|
||||
/*IE10*/
|
||||
-khtml-user-select: none;
|
||||
/*早期浏览器*/
|
||||
user-select: none;
|
||||
}
|
||||
|
||||
.mini {
|
||||
top: 30%;
|
||||
left: 8%;
|
||||
@@ -174,6 +182,7 @@ export default {
|
||||
line-height: 24px;
|
||||
-webkit-line-clamp: 2;
|
||||
}
|
||||
|
||||
.mid {
|
||||
top: 30%;
|
||||
left: 8%;
|
||||
@@ -181,6 +190,7 @@ export default {
|
||||
line-height: 35px;
|
||||
-webkit-line-clamp: 2;
|
||||
}
|
||||
|
||||
.max {
|
||||
top: 30%;
|
||||
left: 8%;
|
||||
@@ -188,12 +198,12 @@ export default {
|
||||
line-height: 40px;
|
||||
-webkit-line-clamp: 2;
|
||||
}
|
||||
|
||||
.te-max {
|
||||
top: 30%;
|
||||
top: 30%;
|
||||
left: 8%;
|
||||
font-size: 20px;
|
||||
line-height: 35px;
|
||||
-webkit-line-clamp: 2;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
}</style>
|
||||
|
||||
@@ -42,6 +42,7 @@
|
||||
<el-dropdown-item command="four" divided>U选小课堂</el-dropdown-item>
|
||||
<el-dropdown-item command="five" divided>社招新员工</el-dropdown-item>
|
||||
<el-dropdown-item command="six" divided>贡献者专区</el-dropdown-item>
|
||||
<!-- <el-dropdown-item command="seven" divided>教师专区</el-dropdown-item> -->
|
||||
</el-dropdown-menu>
|
||||
</el-dropdown>
|
||||
</div>
|
||||
@@ -232,7 +233,7 @@ export default {
|
||||
handleCommand(val) {
|
||||
if (val === "four") {
|
||||
this.$emit('showClass',true)
|
||||
} else {
|
||||
} else {
|
||||
let urlPre = window.location.protocol + "//" + window.location.host;
|
||||
// process.env.VUE_APP_BOE_WEB_URL
|
||||
let obj = {
|
||||
@@ -242,6 +243,7 @@ export default {
|
||||
// four: 'https://m.qingxuetang.com/x/?appId=qxtcorp306130',
|
||||
five: urlPre + "/boe/new-employee/index.html",
|
||||
six: urlPre + "/web/contributor/index",
|
||||
seven:this.webBaseUrl + '/grateful'
|
||||
};
|
||||
window.open(obj[val]);
|
||||
}
|
||||
|
||||
@@ -21,6 +21,7 @@
|
||||
<el-dropdown-item command='three' divided>管理者进阶</el-dropdown-item>
|
||||
<el-dropdown-item command='for' divided>U选小课堂</el-dropdown-item>
|
||||
<el-dropdown-item command='five' divided>社招新员工</el-dropdown-item>
|
||||
<!-- <el-dropdown-item command="seven" divided>教师专区</el-dropdown-item> -->
|
||||
</el-dropdown-menu>
|
||||
</el-dropdown>
|
||||
</div>
|
||||
@@ -68,7 +69,7 @@
|
||||
<img v-if="userInfo.sex === 1 " src="../../../../public/images/Avatarman.png" alt="" style="width: 30px;height: 30px;vertical-align: middle;">
|
||||
<img v-else src="../../../../public/images/Avatarwoman.png" alt="" style="width: 30px;height: 30px;vertical-align: middle;">
|
||||
</span>
|
||||
|
||||
|
||||
{{userInfo.name}}
|
||||
</div>
|
||||
<el-dropdown-menu slot="dropdown">
|
||||
@@ -267,6 +268,7 @@ export default {
|
||||
three: this.webBaseUrl + "/study/index?study=1",
|
||||
// four: 'https://m.qingxuetang.com/x/?appId=qxtcorp306130',
|
||||
five: urlPre + "/boe/new-employee/index.html",
|
||||
seven: this.webBaseUrl + '/grateful'
|
||||
};
|
||||
window.open(obj[val]);
|
||||
}
|
||||
@@ -491,7 +493,7 @@ export default {
|
||||
::v-deep.el-dropdown-menu {
|
||||
text-align: center;
|
||||
border: none !important;
|
||||
|
||||
|
||||
}
|
||||
::v-deep .el-avatar{
|
||||
margin-right: 8px;
|
||||
@@ -506,7 +508,7 @@ text-align: center;
|
||||
color: #fff;
|
||||
}
|
||||
img{
|
||||
|
||||
|
||||
}
|
||||
::v-deep .dialog-signin{
|
||||
background: transparent;
|
||||
|
||||
@@ -3,279 +3,336 @@ import VueRouter from 'vue-router'
|
||||
/* Layout */
|
||||
import Layout from '@/layout/index'
|
||||
import LayoutPortal from '@/layout/portal'
|
||||
import Grateful from '@/views/grateful'
|
||||
|
||||
Vue.use(VueRouter)
|
||||
|
||||
export const constantRoutes = [{
|
||||
path: '/redirect',
|
||||
component: Layout,
|
||||
hidden: true,
|
||||
children: [{
|
||||
path: '/redirect/:path(.*)',
|
||||
component: (resolve) => require(['@/views/Redirect'], resolve)
|
||||
}]
|
||||
path: '/redirect',
|
||||
component: Layout,
|
||||
hidden: true,
|
||||
children: [{
|
||||
path: '/redirect/:path(.*)',
|
||||
component: (resolve) => require(['@/views/Redirect'], resolve)
|
||||
}]
|
||||
}, {
|
||||
path: '',
|
||||
redirect: '/study'
|
||||
path: '',
|
||||
redirect: '/study'
|
||||
},
|
||||
{
|
||||
path: '/loading',
|
||||
hidden: true,
|
||||
component: (resolve) => require(['@/views/Loading'], resolve),
|
||||
name: 'loading',
|
||||
meta: { title: '正在进入学习中心', icon: 'dashboard', noCache: true, affix: false },
|
||||
path: '/loading',
|
||||
hidden: true,
|
||||
component: (resolve) => require(['@/views/Loading'], resolve),
|
||||
name: 'loading',
|
||||
meta: { title: '正在进入学习中心', icon: 'dashboard', noCache: true, affix: false },
|
||||
},
|
||||
{
|
||||
path: '/login',
|
||||
hidden: true,
|
||||
component: (resolve) => require(['@/views/Login'], resolve),
|
||||
name: 'login',
|
||||
meta: { title: '京东方大学堂登录', icon: 'dashboard', noCache: true, affix: false },
|
||||
path: '/login',
|
||||
hidden: true,
|
||||
component: (resolve) => require(['@/views/Login'], resolve),
|
||||
name: 'login',
|
||||
meta: { title: '京东方大学堂登录', icon: 'dashboard', noCache: true, affix: false },
|
||||
},
|
||||
{
|
||||
path: '/index',
|
||||
hidden: true,
|
||||
component: (resolve) => require(['@/views/Index'], resolve),
|
||||
name: 'index',
|
||||
meta: { title: '首页', icon: 'dashboard', noCache: true, affix: false },
|
||||
path: '/index',
|
||||
hidden: true,
|
||||
component: (resolve) => require(['@/views/Index'], resolve),
|
||||
name: 'index',
|
||||
meta: { title: '首页', icon: 'dashboard', noCache: true, affix: false },
|
||||
},
|
||||
// {
|
||||
// path: '/grateful/index',
|
||||
// hidden: true,
|
||||
// component: (resolve) => require(['@/views/grateful'], resolve),
|
||||
// name: 'gratefulIndex',
|
||||
// meta: { title: '感恩教师首页', icon: 'dashboard', noCache: true, affix: false },
|
||||
// },
|
||||
{
|
||||
path: '/grateful',
|
||||
component: Grateful,
|
||||
redirect: '/grateful/index',
|
||||
children: [
|
||||
{
|
||||
path: 'index',
|
||||
hidden: true,
|
||||
component: (resolve) => require(['@/views/grateful/GratefulHomePage'], resolve),
|
||||
name: 'GratefulHomePage',
|
||||
meta: { title: '感恩教师首页', icon: 'dashboard', noCache: true, affix: true, hidden:false }
|
||||
},
|
||||
{
|
||||
path: 'teacherEmpowerment',
|
||||
hidden: true,
|
||||
component: (resolve) => require(['@/views/grateful/TeacherEmpowerment'], resolve),
|
||||
name: 'TeacherEmpowerment',
|
||||
meta: { title: '教师赋能', icon: 'dashboard', noCache: true, affix: true, hidden:true }
|
||||
},
|
||||
{
|
||||
path: 'toolDown',
|
||||
hidden: true,
|
||||
component: (resolve) => require(['@/views/grateful/ToolDown'], resolve),
|
||||
name: 'ToolDown',
|
||||
meta: { title: '工具下载', icon: 'dashboard', noCache: true, affix: true, hidden:true }
|
||||
},
|
||||
{
|
||||
path: 'gratefulNotice',
|
||||
hidden: true,
|
||||
component: (resolve) => require(['@/views/grateful/GratefulNotice'], resolve),
|
||||
name: 'GratefulNotice',
|
||||
meta: { title: '通知列表', icon: 'dashboard', noCache: true, affix: true, hidden:true }
|
||||
},
|
||||
{
|
||||
path: 'noticeDetail',
|
||||
hidden: true,
|
||||
component: (resolve) => require(['@/views/grateful/NoticeDetail'], resolve),
|
||||
name: 'NoticeDetail',
|
||||
meta: { title: '通知详情', icon: 'dashboard', noCache: true, affix: true, hidden:true }
|
||||
},
|
||||
{
|
||||
path: 'teacherOpinion',
|
||||
hidden: true,
|
||||
component: (resolve) => require(['@/views/grateful/TeacherOpinion'], resolve),
|
||||
name: 'TeacherOpinion',
|
||||
meta: { title: '师资大全', icon: 'dashboard', noCache: true, affix: true, hidden:true }
|
||||
},
|
||||
]
|
||||
},
|
||||
{
|
||||
path: '/forward',
|
||||
hidden: true,
|
||||
component: (resolve) => require(['@/views/Forward'], resolve),
|
||||
name: 'forward',
|
||||
meta: { title: '详细信息', icon: 'dashboard', noCache: true, affix: false },
|
||||
path: '/forward',
|
||||
hidden: true,
|
||||
component: (resolve) => require(['@/views/Forward'], resolve),
|
||||
name: 'forward',
|
||||
meta: { title: '详细信息', icon: 'dashboard', noCache: true, affix: false },
|
||||
},
|
||||
{
|
||||
path: '/course',
|
||||
hidden: true,
|
||||
component: (resolve) => require(['@/views/portal/course/Index'], resolve),
|
||||
name: 'course',
|
||||
meta: { title: '课程',keepAlive:true, icon: 'dashboard', noCache: true, affix: false },
|
||||
path: '/course',
|
||||
hidden: true,
|
||||
component: (resolve) => require(['@/views/portal/course/Index'], resolve),
|
||||
name: 'course',
|
||||
meta: { title: '课程', keepAlive: true, icon: 'dashboard', noCache: true, affix: false },
|
||||
},
|
||||
{
|
||||
path: '/course/micro',
|
||||
hidden: true,
|
||||
component: (resolve) => require(['@/views/portal/course/Micro'], resolve),
|
||||
name: 'courseDetailMicro',
|
||||
meta: { title: '课程详情', icon: 'dashboard', noCache: true, affix: false },
|
||||
path: '/course/micro',
|
||||
hidden: true,
|
||||
component: (resolve) => require(['@/views/portal/course/Micro'], resolve),
|
||||
name: 'courseDetailMicro',
|
||||
meta: { title: '课程详情', icon: 'dashboard', noCache: true, affix: false },
|
||||
},
|
||||
{
|
||||
path: '/course/detail',
|
||||
hidden: true,
|
||||
component: (resolve) => require(['@/views/portal/course/Detail'], resolve),
|
||||
name: 'courseDetail',
|
||||
meta: { title: '课程详情',keepAlive:true, icon: 'dashboard', noCache: true, affix: false },
|
||||
path: '/course/detail',
|
||||
hidden: true,
|
||||
component: (resolve) => require(['@/views/portal/course/Detail'], resolve),
|
||||
name: 'courseDetail',
|
||||
meta: { title: '课程详情', keepAlive: true, icon: 'dashboard', noCache: true, affix: false },
|
||||
},
|
||||
// 课程预览
|
||||
{
|
||||
path: '/course/microPreview',
|
||||
hidden: true,
|
||||
component: (resolve) => require(['@/views/portal/course/microPreview'], resolve),
|
||||
name: 'microPreview',
|
||||
meta: { title: '课程预览', icon: 'dashboard', noCache: true, affix: false },
|
||||
path: '/course/microPreview',
|
||||
hidden: true,
|
||||
component: (resolve) => require(['@/views/portal/course/microPreview'], resolve),
|
||||
name: 'microPreview',
|
||||
meta: { title: '课程预览', icon: 'dashboard', noCache: true, affix: false },
|
||||
},
|
||||
{
|
||||
path: '/course/rePreview',
|
||||
hidden: true,
|
||||
component: (resolve) => require(['@/views/portal/course/rePreview'], resolve),
|
||||
name: 'courseRePreview',
|
||||
meta: { title: '课程预览', icon: 'dashboard', noCache: true, affix: false },
|
||||
path: '/course/rePreview',
|
||||
hidden: true,
|
||||
component: (resolve) => require(['@/views/portal/course/rePreview'], resolve),
|
||||
name: 'courseRePreview',
|
||||
meta: { title: '课程预览', icon: 'dashboard', noCache: true, affix: false },
|
||||
},
|
||||
//
|
||||
// 外来链接
|
||||
{
|
||||
path: '/course/boeframe',
|
||||
hidden: true,
|
||||
component: (resolve) => require(['@/views/portal/boeframe'], resolve),
|
||||
name: 'courseBoeframe',
|
||||
meta: { title: '课程预览', icon: 'dashboard', noCache: true, affix: false },
|
||||
path: '/course/boeframe',
|
||||
hidden: true,
|
||||
component: (resolve) => require(['@/views/portal/boeframe'], resolve),
|
||||
name: 'courseBoeframe',
|
||||
meta: { title: '课程预览', icon: 'dashboard', noCache: true, affix: false },
|
||||
},
|
||||
//外来链接
|
||||
{
|
||||
path: '/course/recorded',
|
||||
path: '/course/recorded',
|
||||
hidden: true,
|
||||
component: (resolve) => require(['@/views/portal/course/Recorded'], resolve),
|
||||
name: 'courseDetailRecorded',
|
||||
meta: { title: '课程详情', icon: 'dashboard', noCache: true, affix: false },
|
||||
},
|
||||
{
|
||||
//此页面需要指定课程的参数
|
||||
path: '/course/studyindex',
|
||||
hidden: true,
|
||||
component: (resolve) => require(['@/views/study/coursenew'], resolve),
|
||||
name: 'courseStudyIndex',
|
||||
meta: { title: '课程学习', keepAlive: true, icon: 'dashboard', noCache: true, affix: false },
|
||||
},
|
||||
{
|
||||
path: '/case',
|
||||
hidden: true,
|
||||
component: (resolve) => require(['@/views/portal/case/Index'], resolve),
|
||||
name: 'case',
|
||||
meta: { title: '案例', keepAlive: true, icon: 'dashboard', noCache: false, affix: true },
|
||||
},
|
||||
{
|
||||
path: '/case/detail',
|
||||
hidden: true,
|
||||
component: (resolve) => require(['@/views/portal/case/Detail'], resolve),
|
||||
name: 'caseDetail',
|
||||
meta: { title: '案例详情', keepAlive: true, icon: 'dashboard', noCache: false, affix: true },
|
||||
},
|
||||
{
|
||||
path: '/article',
|
||||
hidden: true,
|
||||
component: (resolve) => require(['@/views/portal/article/Index'], resolve),
|
||||
name: 'article',
|
||||
meta: { title: '文章', icon: 'dashboard', noCache: true, affix: false },
|
||||
},
|
||||
{
|
||||
path: '/article/detail',
|
||||
hidden: true,
|
||||
component: (resolve) => require(['@/views/portal/article/Detail'], resolve),
|
||||
name: 'articleDetail',
|
||||
meta: { title: '文章详情', icon: 'dashboard', noCache: true, affix: false },
|
||||
},
|
||||
{
|
||||
path: '/article/add',
|
||||
hidden: true,
|
||||
component: (resolve) => require(['@/views/portal/article/Add'], resolve),
|
||||
name: 'articleAdd',
|
||||
meta: { title: '发布文章', icon: 'dashboard', noCache: true, affix: false },
|
||||
},
|
||||
{
|
||||
path: '/qa',
|
||||
hidden: true,
|
||||
component: (resolve) => require(['@/views/portal/qa/Index'], resolve),
|
||||
name: 'qa',
|
||||
meta: { title: '问答', icon: 'dashboard', noCache: true, affix: false },
|
||||
},
|
||||
{
|
||||
path: '/message',
|
||||
hidden: true,
|
||||
component: (resolve) => require(['@/views/portal/user/Message'], resolve),
|
||||
name: 'userMsg',
|
||||
meta: { title: '我的消息', icon: 'dashboard', noCache: true, affix: false },
|
||||
},
|
||||
{
|
||||
path: '/home',
|
||||
hidden: true,
|
||||
component: (resolve) => require(['@/views/homepage/Index'], resolve),
|
||||
name: 'homePage',
|
||||
redirect: '/home/:id',
|
||||
meta: { title: '个人主页', icon: 'dashboard', noCache: true, affix: false },
|
||||
children: [{
|
||||
path: ':id',
|
||||
hidden: true,
|
||||
component: (resolve) => require(['@/views/portal/course/Recorded'], resolve),
|
||||
name: 'courseDetailRecorded',
|
||||
meta: { title: '课程详情', icon: 'dashboard', noCache: true, affix: false },
|
||||
},
|
||||
{
|
||||
//此页面需要指定课程的参数
|
||||
path: '/course/studyindex',
|
||||
component: (resolve) => require(['@/views/homepage/page'], resolve),
|
||||
name: 'page',
|
||||
meta: { title: '个人主页', icon: 'dashboard', noCache: true, affix: true }
|
||||
},
|
||||
{
|
||||
path: ':id/leaving',
|
||||
hidden: true,
|
||||
component: (resolve) => require(['@/views/study/coursenew'], resolve),
|
||||
name: 'courseStudyIndex',
|
||||
meta: { title: '课程学习',keepAlive:true, icon: 'dashboard', noCache: true, affix: false },
|
||||
component: (resolve) => require(['@/views/homepage/leavingMessage'], resolve),
|
||||
name: 'leavingMessage',
|
||||
meta: { title: '留言', icon: 'dashboard', noCache: true, affix: true }
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
path: '/case',
|
||||
path: '/comments',
|
||||
hidden: true,
|
||||
component: (resolve) => require(['@/views/portal/Comments'], resolve),
|
||||
name: 'commentReply',
|
||||
meta: { title: '评论回复', icon: 'dashboard', noCache: true, affix: false },
|
||||
},
|
||||
{
|
||||
path: '/qa/answer',
|
||||
hidden: true,
|
||||
component: (resolve) => require(['@/views/portal/qa/Answer'], resolve),
|
||||
name: 'qaAnswer',
|
||||
meta: { title: '写回答', icon: 'dashboard', noCache: true, affix: false },
|
||||
},
|
||||
{
|
||||
path: '/follow',
|
||||
hidden: true,
|
||||
component: (resolve) => require(['@/views/portal/follow'], resolve),
|
||||
name: 'follow',
|
||||
meta: { title: '我的关注', icon: 'dashboard', noCache: true, affix: false },
|
||||
},
|
||||
{
|
||||
path: '/study',
|
||||
component: Layout,
|
||||
redirect: '/study/index',
|
||||
children: [{
|
||||
path: 'index',
|
||||
hidden: true,
|
||||
component: (resolve) => require(['@/views/portal/case/Index'], resolve),
|
||||
name: 'case',
|
||||
meta: { title: '案例',keepAlive:true, icon: 'dashboard', noCache: false, affix: true },
|
||||
component: (resolve) => require(['@/views/StudyIndex'], resolve),
|
||||
name: 'studyIndex',
|
||||
meta: { title: '首页', icon: 'dashboard', noCache: true, affix: true }
|
||||
}]
|
||||
},
|
||||
{
|
||||
path: '/case/detail',
|
||||
path: '/teacher',
|
||||
component: Layout,
|
||||
children: [{
|
||||
path: 'index',
|
||||
hidden: true,
|
||||
component: (resolve) => require(['@/views/portal/case/Detail'], resolve),
|
||||
name: 'caseDetail',
|
||||
meta: { title: '案例详情',keepAlive:true, icon: 'dashboard', noCache: false, affix: true },
|
||||
component: (resolve) => require(['@/views/TeacherIndex'], resolve),
|
||||
name: 'teacherIndex',
|
||||
meta: { title: '教师个人中心', icon: 'dashboard', noCache: true, affix: true }
|
||||
}]
|
||||
},
|
||||
{
|
||||
path: '/article',
|
||||
path: '/manager',
|
||||
component: Layout,
|
||||
children: [{
|
||||
path: 'index',
|
||||
hidden: true,
|
||||
component: (resolve) => require(['@/views/portal/article/Index'], resolve),
|
||||
name: 'article',
|
||||
meta: { title: '文章', icon: 'dashboard', noCache: true, affix: false },
|
||||
component: (resolve) => require(['@/views/ManageIndex'], resolve),
|
||||
name: 'managerIndex',
|
||||
meta: { title: '管理员个人中心', icon: 'dashboard', noCache: true, affix: true }
|
||||
}]
|
||||
},
|
||||
{
|
||||
path: '/article/detail',
|
||||
hidden: true,
|
||||
component: (resolve) => require(['@/views/portal/article/Detail'], resolve),
|
||||
name: 'articleDetail',
|
||||
meta: { title: '文章详情', icon: 'dashboard', noCache: true, affix: false },
|
||||
path: '/exam/test',
|
||||
hidden: true,
|
||||
component: (resolve) => require(['@/views/exam/Test'], resolve),
|
||||
name: 'test',
|
||||
meta: { title: '京东方大学堂考试', icon: 'dashboard', noCache: true, affix: true },
|
||||
},
|
||||
{
|
||||
path: '/article/add',
|
||||
hidden: true,
|
||||
component: (resolve) => require(['@/views/portal/article/Add'], resolve),
|
||||
name: 'articleAdd',
|
||||
meta: { title: '发布文章', icon: 'dashboard', noCache: true, affix: false },
|
||||
path: '/video/test',
|
||||
hidden: true,
|
||||
component: (resolve) => require(['@/views/portal/course/video'], resolve),
|
||||
name: 'videotest',
|
||||
meta: { title: '课程视频测试', icon: 'dashboard', noCache: true, affix: true },
|
||||
},
|
||||
{
|
||||
path: '/qa',
|
||||
hidden: true,
|
||||
component: (resolve) => require(['@/views/portal/qa/Index'], resolve),
|
||||
name: 'qa',
|
||||
meta: { title: '问答', icon: 'dashboard', noCache: true, affix: false },
|
||||
path: '/404',
|
||||
component: (resolve) => require(['@/views/error/404'], resolve),
|
||||
hidden: true
|
||||
},
|
||||
{
|
||||
path: '/message',
|
||||
hidden: true,
|
||||
component: (resolve) => require(['@/views/portal/user/Message'], resolve),
|
||||
name: 'userMsg',
|
||||
meta: { title: '我的消息', icon: 'dashboard', noCache: true, affix: false },
|
||||
path: '/401',
|
||||
component: (resolve) => require(['@/views/error/401'], resolve),
|
||||
hidden: true
|
||||
},
|
||||
{
|
||||
path: '/home',
|
||||
hidden: true,
|
||||
component: (resolve) => require(['@/views/homepage/Index'], resolve),
|
||||
name: 'homePage',
|
||||
redirect: '/home/:id',
|
||||
meta: { title: '个人主页', icon: 'dashboard', noCache: true, affix: false },
|
||||
children: [{
|
||||
path: ':id',
|
||||
hidden: true,
|
||||
component: (resolve) => require(['@/views/homepage/page'], resolve),
|
||||
name: 'page',
|
||||
meta: { title: '个人主页', icon: 'dashboard', noCache: true, affix: true }
|
||||
},
|
||||
{
|
||||
path: ':id/leaving',
|
||||
hidden: true,
|
||||
component: (resolve) => require(['@/views/homepage/leavingMessage'], resolve),
|
||||
name: 'leavingMessage',
|
||||
meta: { title: '留言', icon: 'dashboard', noCache: true, affix: true }
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
path: '/comments',
|
||||
hidden: true,
|
||||
component: (resolve) => require(['@/views/portal/Comments'], resolve),
|
||||
name: 'commentReply',
|
||||
meta: { title: '评论回复', icon: 'dashboard', noCache: true, affix: false },
|
||||
},
|
||||
{
|
||||
path: '/qa/answer',
|
||||
hidden: true,
|
||||
component: (resolve) => require(['@/views/portal/qa/Answer'], resolve),
|
||||
name: 'qaAnswer',
|
||||
meta: { title: '写回答', icon: 'dashboard', noCache: true, affix: false },
|
||||
},
|
||||
{
|
||||
path: '/follow',
|
||||
hidden: true,
|
||||
component: (resolve) => require(['@/views/portal/follow'], resolve),
|
||||
name: 'follow',
|
||||
meta: { title: '我的关注', icon: 'dashboard', noCache: true, affix: false },
|
||||
},
|
||||
{
|
||||
path: '/study',
|
||||
component: Layout,
|
||||
redirect: '/study/index',
|
||||
children: [{
|
||||
path: 'index',
|
||||
hidden: true,
|
||||
component: (resolve) => require(['@/views/StudyIndex'], resolve),
|
||||
name: 'studyIndex',
|
||||
meta: { title: '首页', icon: 'dashboard', noCache: true, affix: true }
|
||||
}]
|
||||
},
|
||||
{
|
||||
path: '/teacher',
|
||||
component: Layout,
|
||||
children: [{
|
||||
path: 'index',
|
||||
hidden: true,
|
||||
component: (resolve) => require(['@/views/TeacherIndex'], resolve),
|
||||
name: 'teacherIndex',
|
||||
meta: { title: '教师个人中心', icon: 'dashboard', noCache: true, affix: true }
|
||||
}]
|
||||
},
|
||||
{
|
||||
path: '/manager',
|
||||
component: Layout,
|
||||
children: [{
|
||||
path: 'index',
|
||||
hidden: true,
|
||||
component: (resolve) => require(['@/views/ManageIndex'], resolve),
|
||||
name: 'managerIndex',
|
||||
meta: { title: '管理员个人中心', icon: 'dashboard', noCache: true, affix: true }
|
||||
}]
|
||||
},
|
||||
{
|
||||
path: '/exam/test',
|
||||
hidden: true,
|
||||
component: (resolve) => require(['@/views/exam/Test'], resolve),
|
||||
name: 'test',
|
||||
meta: { title: '京东方大学堂考试', icon: 'dashboard', noCache: true, affix: true },
|
||||
},
|
||||
{
|
||||
path: '/video/test',
|
||||
hidden: true,
|
||||
component: (resolve) => require(['@/views/portal/course/video'], resolve),
|
||||
name: 'videotest',
|
||||
meta: { title: '课程视频测试', icon: 'dashboard', noCache: true, affix: true },
|
||||
},
|
||||
{
|
||||
path: '/404',
|
||||
component: (resolve) => require(['@/views/error/404'], resolve),
|
||||
hidden: true
|
||||
},
|
||||
{
|
||||
path: '/401',
|
||||
component: (resolve) => require(['@/views/error/401'], resolve),
|
||||
hidden: true
|
||||
},
|
||||
{
|
||||
path: '/500',
|
||||
component: (resolve) => require(['@/views/error/500'], resolve),
|
||||
hidden: true
|
||||
path: '/500',
|
||||
component: (resolve) => require(['@/views/error/500'], resolve),
|
||||
hidden: true
|
||||
}
|
||||
]
|
||||
|
||||
const router = new VueRouter({
|
||||
mode: 'history',
|
||||
base: process.env.BASE_URL,
|
||||
routes: constantRoutes,
|
||||
scrollBehavior(to, from, saveTop) {
|
||||
if (saveTop) {
|
||||
return saveTop;
|
||||
} else {
|
||||
return { x: 0, y: 0 }
|
||||
}
|
||||
},
|
||||
mode: 'history',
|
||||
base: process.env.BASE_URL,
|
||||
routes: constantRoutes,
|
||||
scrollBehavior(to, from, saveTop) {
|
||||
if (saveTop) {
|
||||
return saveTop;
|
||||
} else {
|
||||
return { x: 0, y: 0 }
|
||||
}
|
||||
},
|
||||
})
|
||||
|
||||
export default router
|
||||
|
||||
@@ -1308,6 +1308,8 @@ export default {
|
||||
courseIds.push(item.id);
|
||||
});
|
||||
this.loadCouserTeacher(res.result, courseIds);
|
||||
console.log(res.result,'lalalala');
|
||||
|
||||
this.courseList.list = res.result;
|
||||
//this.couname = res.result.list.name;
|
||||
// if (res.result.count - pageIndex * num < 8) {
|
||||
|
||||
891
src/views/grateful/GratefulHomePage.vue
Normal file
@@ -0,0 +1,891 @@
|
||||
<template>
|
||||
<div>
|
||||
<div class="course-banner">
|
||||
<div id="container" style="z-index: 99" v-if="resonimg.length == 1">
|
||||
<!-- 当轮播图等于一张时 -->
|
||||
<swiper :options="swiperOptiontwo">
|
||||
<swiper-slide style="margin: 0 auto" v-for="(item, idx) in resonimg" :key="'a' + idx"
|
||||
class="swiper-slide games pointer">
|
||||
<div class="bannbox" :style="{
|
||||
background: `url(${fileBaseUrl + item.image
|
||||
}) no-repeat 100% / 100%`,
|
||||
}"></div>
|
||||
<img class="banner-img" style="margin: 0 auto;width:100%;" :src="fileBaseUrl + item.image" alt="" />
|
||||
</swiper-slide>
|
||||
</swiper>
|
||||
</div>
|
||||
<div id="container" style="z-index: 99" v-else>
|
||||
<swiper :options="swiperOption" ref="mySwiper" v-if="resonimg.length > 1">
|
||||
<swiper-slide style="margin: 0 auto" v-for="(item, idx) in resonimg" :key="'b' + idx"
|
||||
class="swiper-slide games pointer">
|
||||
<div class="bannbox" :style="{
|
||||
background: `url(${fileBaseUrl + item.image
|
||||
}) no-repeat 100% / 100%`,
|
||||
}"></div>
|
||||
<img class="banner-img" style="margin: 0 auto;width:100%;" :src="fileBaseUrl + item.image" alt="" />
|
||||
</swiper-slide>
|
||||
<div class="swiper-pagination" slot="pagination"></div>
|
||||
</swiper>
|
||||
</div>
|
||||
</div>
|
||||
<!-- 图片 -->
|
||||
<div class="xindex-content">
|
||||
<div class="modules xcontent2">
|
||||
<div class="xcontent2-main">
|
||||
<div class="gratefulNav">
|
||||
<div class="navImg">
|
||||
<router-link to="/grateful/teacherOpinion">
|
||||
<img src="../../assets/images/grateful/famousTeacher.png" alt="">
|
||||
</router-link>
|
||||
</div>
|
||||
<div class="navNotice">
|
||||
<div id="fixd-box" style="height: 100%;">
|
||||
<div class="portal-ranking ranking-bg" style="height: 100%;display: flex;flex-direction: column;"
|
||||
:class="showNoticeImg ? 'allPadding' : ''">
|
||||
<div :class="showNoticeImg ? 'noticeBgc' : ''">
|
||||
<div style="display: flex;justify-content: space-between;">
|
||||
<p class="ranking-title">通知</p>
|
||||
<router-link v-if="courseList.noticeList.length >= 6" to="/grateful/gratefulNotice"
|
||||
style="font-size: 14px;">查看更多</router-link>
|
||||
</div>
|
||||
<ul>
|
||||
<li v-for="(item, index) in courseList.noticeList" :key="index"
|
||||
style="cursor: pointer;line-height: 22px;" class="liList">
|
||||
<router-link :to="'/grateful/noticeDetail?id=' + item.id"
|
||||
style="display: flex;align-items: center;">
|
||||
<span class="portal-right-text blue-one">
|
||||
<img :src="getPic(index)" alt="">
|
||||
</span>
|
||||
<div class="portal-title-desc"
|
||||
style="flex: 1;font-size: 14px;display: flex;justify-content: space-between;">
|
||||
<span class="title-line-ellipsis " style="flex: 1;">{{ item.name }}</span>
|
||||
<span>{{ item.createTime.split(' ')[0] }}</span>
|
||||
</div>
|
||||
</router-link>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="navTool">
|
||||
<div id="fixd-box" style="height: 100%;">
|
||||
<div class="portal-ranking ranking-bg1" style="height: 100%;display: flex;flex-direction: column;"
|
||||
:class="showToolImg ? 'allPadding' : ''">
|
||||
<div :class="showToolImg ? 'toolBgc' : ''">
|
||||
<div style="display: flex;justify-content: space-between;">
|
||||
<p class="ranking-title">工具下载</p>
|
||||
<router-link v-if="courseList.toolList.length >= 6" to="/grateful/toolDown"
|
||||
style="font-size: 14px;">查看更多</router-link>
|
||||
</div>
|
||||
<ul>
|
||||
<li v-for="(item, index) in courseList.toolList" :key="index"
|
||||
style="cursor: pointer;line-height: 22px;" class="title-line-ellipsis liList"
|
||||
@click="downTool(item)">
|
||||
<span class="portal-right-text orange-one" v-if="index == 0">
|
||||
<img :src="`${webBaseUrl}/images/list-01.png`" alt="">
|
||||
</span>
|
||||
<span class="portal-right-text orange-tow" v-if="index == 1">
|
||||
<img :src="`${webBaseUrl}/images/list02.png`" alt="">
|
||||
</span>
|
||||
<span class="portal-right-text orange-three" v-if="index == 2">
|
||||
<img :src="`${webBaseUrl}/images/list03.png`" alt="">
|
||||
</span>
|
||||
<span class="portal-right-text" v-if="index == 3">
|
||||
<img :src="`${webBaseUrl}/images/list04.png`" alt="">
|
||||
</span>
|
||||
<span class="portal-right-text" v-if="index == 4">
|
||||
<img :src="`${webBaseUrl}/images/list05.png`" alt="">
|
||||
</span>
|
||||
<span class="portal-right-text" v-if="index == 5">
|
||||
<img :src="`${webBaseUrl}/images/listblue06.png`" alt="">
|
||||
</span>
|
||||
<span class="portal-title-desc" style="font-size: 14px;">{{ item.name.split('.')[0] }}</span>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- 教师赋能 -->
|
||||
<div class="xindex-content">
|
||||
<div class="modules xcontent2">
|
||||
<div class="xcontent2-main">
|
||||
<!--内容块-->
|
||||
<div class="modules-title xindex-main">
|
||||
<span class="modules-text">教师赋能</span>
|
||||
<span class="more">
|
||||
<router-link to="/grateful/teacherEmpowerment">查看更多</router-link>
|
||||
</span>
|
||||
</div>
|
||||
<div class="modules-list list">
|
||||
<!--内容列表内容-->
|
||||
<div v-for="(course, ccidx) in courseList.list" :key="'cc' + ccidx" class="xindex-course"
|
||||
style="position: relative;margin-right: 0;">
|
||||
<a @click="toCourseDetail(course)">
|
||||
<div class="xindex-course-image">
|
||||
<course-image :course="course"></course-image>
|
||||
<span v-if="course.type == 20 || course.type == 10" class="course-type">录播课</span>
|
||||
<span v-if="course.type == 30" class="course-type">面授课</span>
|
||||
<span v-if="course.type == 40" class="course-type">学习项目</span>
|
||||
</div>
|
||||
<div style="width: 80%" :title="course.name" class="course-title portal-title-tow two-line-ellipsis">
|
||||
{{ course.name }}
|
||||
</div>
|
||||
<div class="course-author">
|
||||
<div class="course-author-left">
|
||||
{{ course.teacher }}
|
||||
<span class="study-num">{{ formatNum(course.studies) }}人学习</span>
|
||||
</div>
|
||||
<div style="display: flex">
|
||||
<div v-if="course.score != '0'">
|
||||
<span class="course-score-value" style="margin-left: 10px">{{ toScore(Number(course.score))
|
||||
}}分</span>
|
||||
</div>
|
||||
<div v-else class="course-score-no">未评分</div>
|
||||
</div>
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="float-tools" @click="() => (gratefulVisible = !gratefulVisible)">
|
||||
<div class="content">
|
||||
<img src="../../assets/images/grateful/suggestion.png" alt="" />
|
||||
<span>给点建议</span>
|
||||
</div>
|
||||
</div>
|
||||
<!-- 意见 -->
|
||||
<el-dialog :close-on-click-modal="false" width="629px" :visible.sync="gratefulVisible" :append-to-body="true"
|
||||
@closed="closeDlg">
|
||||
<div class="dialogContent">
|
||||
<div class="dialogTop">
|
||||
<div class="words">
|
||||
<div>欢迎留下您的宝贵建议</div>
|
||||
</div>
|
||||
</div>
|
||||
<el-form :model="form">
|
||||
<el-form-item>
|
||||
<el-input type="textarea" placeholder="请输入内容......" v-model="form.textarea" class="textarea"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<div style="display: flex; justify-content: center">
|
||||
<el-button style="width: 100px;" @click="closeDlg">取消</el-button>
|
||||
<el-button style="width: 100px;" @click="submitNotice" type="primary">确认</el-button>
|
||||
</div>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</div>
|
||||
</el-dialog>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import apiCourseStudy from "@/api/modules/courseStudy.js";
|
||||
import courseImage from "@/components/Course/courseImage.vue";
|
||||
import { toScore, formatUserNumber } from "@/utils/tools.js";
|
||||
import { saveOpinion, noticeList, courselList, toolList, carouselList, toolDown } from '@/api/modules/grateful.js'
|
||||
export default {
|
||||
name: "Grateful",
|
||||
components: {
|
||||
courseImage,
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
showNoticeImg: false,
|
||||
showToolImg: false,
|
||||
form: {
|
||||
textarea: "",
|
||||
},
|
||||
gratefulVisible: false,
|
||||
formatNum: formatUserNumber,
|
||||
toScore,
|
||||
// 列表
|
||||
courseList: {
|
||||
num: 12,
|
||||
orderType: 2,
|
||||
list: [],
|
||||
noticeList: [],
|
||||
toolList: []
|
||||
},
|
||||
resonimg: [],
|
||||
fileBaseUrl: process.env.VUE_APP_FILE_BASE_URL,
|
||||
swiperOptiontwo: {
|
||||
autoplay: false,
|
||||
// noSwiping: true,
|
||||
},
|
||||
resonimg: [],
|
||||
swiperOption: {
|
||||
autoplay: {
|
||||
delay: 2000,
|
||||
disableOnInteraction: false, //解决滑动后不能轮播的问题
|
||||
},
|
||||
speed: 3000, //切换速度,即slider自动滑动开始到结束的时间(单位ms)
|
||||
loop: true, //循环切换
|
||||
peed: 300, //循环速度
|
||||
scrollbar: ".swiper-scrollbar",
|
||||
pagination: {
|
||||
el: ".swiper-pagination",
|
||||
// type : 'progressbar', //分页器形状
|
||||
clickable: true, //点击分页器的指示点分页器会控制Swiper切换
|
||||
},
|
||||
navigation: {
|
||||
nextEl: ".swiper-button-next",
|
||||
prevEl: ".swiper-button-prev",
|
||||
},
|
||||
}
|
||||
};
|
||||
},
|
||||
mounted() {
|
||||
this.couresreso();
|
||||
this.getCourseData(1);
|
||||
this.getNoticeData()
|
||||
this.getToolData()
|
||||
},
|
||||
methods: {
|
||||
downTool(toolInfo) {
|
||||
console.log(toolInfo);
|
||||
window.open(`/activityApi/xboe/m/boe/tools/url/download?urlStr=${process.env.VUE_APP_BOE_WEB_URL}/upload${toolInfo.filePath}&fileName=${toolInfo.name}`)
|
||||
// toolDown({
|
||||
// urlStr: `${process.env.VUE_APP_BOE_WEB_URL}/upload${toolInfo.filePath}`,
|
||||
// fileName: toolInfo.name
|
||||
// }).then((result) => {
|
||||
// const link = document.createElement('a');// 创建a标签
|
||||
// let blob = new Blob([result.data], { type: '' }); // 设置文件类型
|
||||
// link.style.display = "none";
|
||||
// link.href = URL.createObjectURL(blob); // 创建URL
|
||||
// link.setAttribute("download", `${toolInfo.name}`);
|
||||
// document.body.appendChild(link);
|
||||
// link.click();
|
||||
// URL.revokeObjectURL(link.href);
|
||||
// document.body.removeChild(link);
|
||||
// })
|
||||
},
|
||||
couresreso() {
|
||||
carouselList().then((res) => {
|
||||
console.log(res);
|
||||
const list = res.data.records.map(item => {
|
||||
return {
|
||||
image: item.picPath,
|
||||
name: item.displayPage,
|
||||
JumpUrl: '',
|
||||
bgcolor: '',
|
||||
...item
|
||||
}
|
||||
});
|
||||
this.resonimg = list;
|
||||
})
|
||||
},
|
||||
submitNotice() {
|
||||
if (!this.form.textarea) return this.$message({ message: '请输入内容', type: 'error' })
|
||||
saveOpinion({ content: this.form.textarea }).then(() => {
|
||||
this.$message({ message: '提交成功', type: 'success' })
|
||||
this.closeDlg()
|
||||
})
|
||||
},
|
||||
getPic(index) {
|
||||
return this.webBaseUrl + "/images/listblue0" + (index + 1) + ".png";
|
||||
},
|
||||
closeDlg() {
|
||||
this.form.textarea = ''
|
||||
this.gratefulVisible = false
|
||||
},
|
||||
toCourseDetail(item) {
|
||||
console.log(item);
|
||||
if (item.type == 10) {
|
||||
//console.log("直接进入学习页面");
|
||||
this.$router.push("/course/studyindex?id=" + item.courseId);
|
||||
} else if (item.type == 20) {
|
||||
apiCourseStudy.hasSignup(item.courseId).then((rs) => {
|
||||
if (rs.status == 200) {
|
||||
this.$router.push("/course/studyindex?id=" + item.courseId);
|
||||
} else {
|
||||
this.$router.push("/course/detail?id=" + item.courseId);
|
||||
}
|
||||
});
|
||||
}
|
||||
},
|
||||
getCourseData(pageIndex) {
|
||||
courselList({
|
||||
pageNo: pageIndex,
|
||||
pageSize: 8
|
||||
}).then((res) => {
|
||||
if (res.code == 200 && res.data.records.length > 0) {
|
||||
console.log(res.data.records, '之前的');
|
||||
// res.data.records.map((item) => {
|
||||
// return {
|
||||
// ...item,
|
||||
// coverImg:item.coverImg
|
||||
// }
|
||||
// })
|
||||
this.courseList.list = res.data.records;
|
||||
} else {
|
||||
console.log("加载课程信息失败:" + res.error);
|
||||
}
|
||||
});
|
||||
},
|
||||
getNoticeData() {
|
||||
noticeList({
|
||||
pageNo: 1,
|
||||
pageSize: 6,
|
||||
isTop: ''
|
||||
}).then((res) => {
|
||||
console.log(res, '通知');
|
||||
if (res.data.records.length <= 3) {
|
||||
this.showNoticeImg = true
|
||||
}
|
||||
this.courseList.noticeList = res.data.records || []
|
||||
})
|
||||
},
|
||||
getToolData() {
|
||||
toolList({
|
||||
pageNo: 1,
|
||||
pageSize: 6
|
||||
}).then((result) => {
|
||||
if (result.data.records.length <= 3) {
|
||||
this.showToolImg = true
|
||||
}
|
||||
console.log(result.data.records, '哈哈哈哈');
|
||||
this.courseList.toolList = result.data.records || []
|
||||
})
|
||||
},
|
||||
},
|
||||
};
|
||||
</script>
|
||||
|
||||
<style scoped lang="scss">
|
||||
.allPadding {
|
||||
padding: 0px;
|
||||
}
|
||||
|
||||
.noticeBgc {
|
||||
height: 100%;
|
||||
width: 100%;
|
||||
background: url('../../assets/images/grateful/noticeBgc.png') no-repeat;
|
||||
background-size: 100%;
|
||||
background-position: left bottom;
|
||||
padding: 20px;
|
||||
border-radius: 8px;
|
||||
}
|
||||
|
||||
.toolBgc {
|
||||
height: 100%;
|
||||
width: 100%;
|
||||
background: url('../../assets/images/grateful/toolBgc.png') no-repeat;
|
||||
background-size: 100%;
|
||||
background-position: left bottom;
|
||||
padding: 20px;
|
||||
border-radius: 8px;
|
||||
}
|
||||
|
||||
@media screen and (max-width: 1366px) {
|
||||
.swiper-pagination {
|
||||
top: 310px;
|
||||
}
|
||||
}
|
||||
|
||||
@media screen and (max-width: 1680px) and (min-width:1367px) {
|
||||
.swiper-pagination {
|
||||
top: 360px;
|
||||
}
|
||||
}
|
||||
|
||||
@media screen and (max-width: 1920px) and (min-width: 1681px) {
|
||||
.swiper-pagination {
|
||||
top: 360px;
|
||||
}
|
||||
}
|
||||
|
||||
@media screen and (min-width: 1921px) {
|
||||
.swiper-pagination {
|
||||
top: 360px;
|
||||
}
|
||||
}
|
||||
|
||||
.bannbox {
|
||||
width: 100%;
|
||||
height: 420px;
|
||||
text-align: center;
|
||||
filter: blur(5px);
|
||||
z-index: -1;
|
||||
background-size: 100% 100%;
|
||||
}
|
||||
|
||||
::v-deep.swiper-slide .games .swiper-slide-active {
|
||||
text-align: center !important;
|
||||
}
|
||||
|
||||
#container {
|
||||
position: absolute;
|
||||
height: 420px;
|
||||
top: 0;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.banner-img {
|
||||
height: 420px;
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
right: 0;
|
||||
transform: (-50%, -50%);
|
||||
}
|
||||
|
||||
.course-banner {
|
||||
height: 420px;
|
||||
position: relative;
|
||||
|
||||
&::before {
|
||||
content: url(../../assets/images/grateful/logo.png);
|
||||
position: absolute;
|
||||
top: 20px;
|
||||
left: 40px;
|
||||
z-index: 100
|
||||
}
|
||||
|
||||
.swiper-button-prev {
|
||||
height: 38px;
|
||||
padding: 0 16px;
|
||||
background: rgba($color: #000000, $alpha: 0.8) url("../../assets/images/icon/ban-left.png") no-repeat;
|
||||
background-size: 12px 18px;
|
||||
background-position: 16px 10px;
|
||||
bottom: 66px;
|
||||
border-radius: 19px 0 0 19px;
|
||||
}
|
||||
|
||||
.swiper-button-next {
|
||||
height: 38px;
|
||||
bottom: 66px;
|
||||
top: auto;
|
||||
padding: 0 16px;
|
||||
background: rgba($color: #000000, $alpha: 0.1) url("../../assets/images/icon/ban-right.png") no-repeat;
|
||||
background-size: 12px 18px;
|
||||
background-position: 6px 10px;
|
||||
border-radius: 0 19px 19px 0;
|
||||
}
|
||||
|
||||
.swiper-pagination-bullets {
|
||||
left: 60px;
|
||||
bottom: 66px;
|
||||
}
|
||||
|
||||
::v-deep .swiper-pagination {
|
||||
line-height: 25px;
|
||||
height: 32px;
|
||||
border-radius: 19px;
|
||||
width: auto;
|
||||
left: 45%;
|
||||
padding: 0 20px;
|
||||
border-radius: 19px;
|
||||
|
||||
.swiper-pagination-bullet {
|
||||
position: relative;
|
||||
width: 25px;
|
||||
height: 5px;
|
||||
margin-top: 10px;
|
||||
background: #fff;
|
||||
opacity: 1 !important;
|
||||
border-radius: 2px;
|
||||
}
|
||||
|
||||
.swiper-pagination-bullet::before {
|
||||
content: "";
|
||||
position: absolute;
|
||||
top: -20px;
|
||||
bottom: -20px;
|
||||
left: -2px;
|
||||
right: -2px;
|
||||
}
|
||||
|
||||
.swiper-pagination-bullet-active {
|
||||
height: 5px;
|
||||
opacity: 1 !important;
|
||||
margin-top: 10px;
|
||||
width: 25px;
|
||||
background: #387df7;
|
||||
border-radius: 2px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
::v-deep .el-dialog__body {
|
||||
background: linear-gradient(180deg, rgba(56, 125, 247, 0.2) 0%, rgba(166, 168, 255, 0) 100%) no-repeat;
|
||||
background-size: 100% 136px;
|
||||
}
|
||||
|
||||
::v-deep .el-dialog__header {
|
||||
background: linear-gradient(180deg, rgba(56, 125, 247, 0.2) 0%, rgba(166, 168, 255, 0) 100%) no-repeat;
|
||||
background-size: 100% 1000px;
|
||||
}
|
||||
|
||||
.dialogContent {
|
||||
|
||||
.dialogTop {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
margin-bottom: 40px;
|
||||
|
||||
.words {
|
||||
font-size: 26px;
|
||||
font-weight: 600;
|
||||
color: #333333;
|
||||
line-height: 37px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.title-line-ellipsis {
|
||||
display: -webkit-box;
|
||||
text-overflow: ellipsis;
|
||||
-webkit-box-orient: vertical;
|
||||
-webkit-line-clamp: 1;
|
||||
box-sizing: border-box;
|
||||
word-break: break-all;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.gratefulNav {
|
||||
display: grid;
|
||||
grid-template-columns: 1.5fr 1fr 1fr;
|
||||
column-gap: 40px;
|
||||
|
||||
.navImg {
|
||||
img {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.textarea {
|
||||
width: 100%;
|
||||
|
||||
::v-deep .el-textarea__inner {
|
||||
min-height: 300px !important;
|
||||
}
|
||||
}
|
||||
|
||||
.float-tools {
|
||||
position: fixed;
|
||||
right: 0;
|
||||
bottom: 40%;
|
||||
z-index: 999;
|
||||
cursor: pointer;
|
||||
|
||||
.content {
|
||||
width: 152px;
|
||||
height: 55px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
background: linear-gradient(86deg, #00c8ff 0%, #167cff 100%);
|
||||
border-radius: 100px 0px 0px 100px;
|
||||
padding: 20px;
|
||||
|
||||
img {
|
||||
width: 20px;
|
||||
height: 20px;
|
||||
}
|
||||
|
||||
span {
|
||||
margin-left: 10px;
|
||||
color: #fff;
|
||||
font-size: 20px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.xindex-course-image:hover {
|
||||
transform: scale(1.2) translateY(-15px);
|
||||
transition: all 0.6s;
|
||||
}
|
||||
|
||||
|
||||
.two-line-ellipsis {
|
||||
display: -webkit-box;
|
||||
overflow: hidden;
|
||||
-webkit-box-orient: vertical;
|
||||
-webkit-line-clamp: 2;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
|
||||
// 内容部分
|
||||
.modules {
|
||||
margin-top: 20px;
|
||||
display: flex;
|
||||
|
||||
.modules-title {
|
||||
padding: 0;
|
||||
|
||||
.modules-text {
|
||||
height: 28px;
|
||||
font-size: 20px;
|
||||
font-family: PingFangSC-Semibold-, PingFangSC-Semibold;
|
||||
font-weight: 700;
|
||||
color: #333333;
|
||||
}
|
||||
|
||||
.recommend {
|
||||
vertical-align: text-bottom;
|
||||
height: 26px;
|
||||
}
|
||||
|
||||
.quyer-tag {
|
||||
margin-left: 15px;
|
||||
|
||||
a {
|
||||
color: #333333;
|
||||
font-size: 14px;
|
||||
margin: 0 15px;
|
||||
display: inline-block;
|
||||
text-decoration: none;
|
||||
outline: none;
|
||||
}
|
||||
|
||||
.current {
|
||||
width: 44px;
|
||||
height: 26px;
|
||||
background: #387df7;
|
||||
border-radius: 4px;
|
||||
color: #fff;
|
||||
line-height: 26px;
|
||||
text-align: center;
|
||||
}
|
||||
}
|
||||
|
||||
.more {
|
||||
float: right;
|
||||
margin-top: 7px;
|
||||
color: #333333;
|
||||
font-size: 14px;
|
||||
}
|
||||
}
|
||||
|
||||
.modules-list {
|
||||
margin-top: 30px;
|
||||
|
||||
.case-card {
|
||||
margin-bottom: 15px;
|
||||
|
||||
.case-info-image-box {
|
||||
position: relative;
|
||||
|
||||
.case-info {
|
||||
width: 385px;
|
||||
|
||||
.case-info-title {
|
||||
font-size: 18px;
|
||||
color: #343434;
|
||||
margin-bottom: 5px;
|
||||
|
||||
.case-info-time {
|
||||
font-size: 12px;
|
||||
color: #999999;
|
||||
float: right;
|
||||
margin-top: 8px;
|
||||
}
|
||||
}
|
||||
|
||||
.case-info-summary {
|
||||
font-size: 12px;
|
||||
color: #666666;
|
||||
height: 82px;
|
||||
line-height: 18px;
|
||||
}
|
||||
}
|
||||
|
||||
img {
|
||||
width: 160px;
|
||||
height: 105px;
|
||||
position: absolute;
|
||||
top: 5px;
|
||||
right: 0;
|
||||
}
|
||||
}
|
||||
|
||||
.case-info-box {
|
||||
.case-info {
|
||||
.case-info-title {
|
||||
font-size: 18px;
|
||||
color: #343434;
|
||||
margin-bottom: 5px;
|
||||
|
||||
.case-info-time {
|
||||
font-size: 12px;
|
||||
color: #999999;
|
||||
float: right;
|
||||
margin-top: 8px;
|
||||
}
|
||||
}
|
||||
|
||||
.case-info-summary {
|
||||
font-size: 12px;
|
||||
color: #666666;
|
||||
height: 82px;
|
||||
line-height: 18px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.case-other-info {
|
||||
height: 40px;
|
||||
margin-top: 10px;
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
}
|
||||
}
|
||||
|
||||
.article-card {
|
||||
background: #fff;
|
||||
border-radius: 8px;
|
||||
|
||||
.article-card-left {
|
||||
.article-card-box {
|
||||
.article-info-image-box {
|
||||
border-radius: 4px;
|
||||
|
||||
.article-info {
|
||||
height: 400px;
|
||||
|
||||
.article-info-title {
|
||||
font-size: 16px;
|
||||
color: #00253e;
|
||||
font-weight: 500;
|
||||
margin-bottom: 5px;
|
||||
margin-top: 5px;
|
||||
}
|
||||
|
||||
.article-info-summary {
|
||||
font-size: 14px;
|
||||
color: #6e7b84;
|
||||
height: 160px;
|
||||
line-height: 22px;
|
||||
}
|
||||
}
|
||||
|
||||
img {
|
||||
width: 470px;
|
||||
height: 330px;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.article-card-right {
|
||||
flex: 1;
|
||||
margin-left: 28px;
|
||||
|
||||
.article-card-box {
|
||||
margin-bottom: 16px;
|
||||
padding-bottom: 16px;
|
||||
|
||||
&:last-child {
|
||||
margin-bottom: 0px;
|
||||
padding-bottom: 0px;
|
||||
}
|
||||
|
||||
.article-info-box {
|
||||
.article-info {
|
||||
display: flex;
|
||||
|
||||
.article-image {
|
||||
width: 140px;
|
||||
height: 105px;
|
||||
margin-top: 10px;
|
||||
margin-left: 20px;
|
||||
}
|
||||
|
||||
.article-body {
|
||||
flex: 1;
|
||||
|
||||
.article-info-title {
|
||||
font-size: 18px;
|
||||
color: #343434;
|
||||
margin-bottom: 5px;
|
||||
|
||||
.article-info-time {
|
||||
font-size: 12px;
|
||||
color: #999999;
|
||||
float: right;
|
||||
margin-top: 8px;
|
||||
font-weight: 500;
|
||||
}
|
||||
}
|
||||
|
||||
.article-info-summary {
|
||||
padding-top: 9px;
|
||||
font-size: 14px;
|
||||
color: #666666;
|
||||
height: 43px;
|
||||
line-height: 18px;
|
||||
font-weight: 500;
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.article-card-box:not(:last-child) {
|
||||
border-bottom: 1px solid #ededed;
|
||||
}
|
||||
}
|
||||
|
||||
.article-other-info {
|
||||
display: flex;
|
||||
}
|
||||
}
|
||||
|
||||
.qa-card {
|
||||
box-sizing: border-box;
|
||||
box-shadow: 0px 2px 12px 0px rgba(0, 0, 0, 0.05);
|
||||
border-radius: 8px;
|
||||
background: #fff;
|
||||
|
||||
&:last-child {
|
||||
margin-right: 0;
|
||||
}
|
||||
|
||||
.qa-top {
|
||||
& span:first-child {
|
||||
height: 24px;
|
||||
background: rgba($color: #387df7, $alpha: 0.05);
|
||||
border-radius: 4px;
|
||||
font-size: 12px;
|
||||
color: #387df7;
|
||||
}
|
||||
|
||||
span {
|
||||
color: #6e7b84;
|
||||
}
|
||||
}
|
||||
|
||||
.qa-center {
|
||||
position: relative;
|
||||
background: rgba($color: #04243c, $alpha: 0.04);
|
||||
border-radius: 4px;
|
||||
|
||||
.qa-views {
|
||||
position: absolute;
|
||||
color: #6e7b84;
|
||||
}
|
||||
}
|
||||
|
||||
.qa-char {
|
||||
display: flex;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.list {
|
||||
display: grid;
|
||||
justify-content: space-between;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
168
src/views/grateful/GratefulNotice.vue
Normal file
@@ -0,0 +1,168 @@
|
||||
<template>
|
||||
<div>
|
||||
<div class="noticeBanner">
|
||||
</div>
|
||||
<div class="xindex-content" style="padding: 0">
|
||||
<div class="modules xcontent2">
|
||||
<div class="xcontent2-main">
|
||||
<div class="navTop">
|
||||
<router-link to="/grateful" class="nav">首页</router-link> > <span style="cursor: pointer;" class="nav">通知列表</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- 教师赋能 -->
|
||||
<div class="xindex-content" style="padding: 0">
|
||||
<div class="modules xcontent2">
|
||||
<div class="xcontent2-main">
|
||||
<div class="modules-list" style="margin-top: 0;">
|
||||
<div style="padding:20px 70px;" class="bgc">
|
||||
<div style="min-height: 600px;">
|
||||
<!--内容列表内容-->
|
||||
<div v-for="(item, ccidx) in list" :key="'cc' + ccidx" class="toolEvery" @click="noticeDetail(item)">
|
||||
<div class="contnet">{{ item.name }}</div>
|
||||
<div class="case-info-date portal-time">
|
||||
<i class="el-icon-time" style="margin-right: 5px;"></i>
|
||||
<time-show :time="item.createTime"></time-show>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div v-if="total > 0">
|
||||
<pagination style="background-color: rgba(0, 0, 0, 0);" :size="params.pageSize" :total="total"
|
||||
:page="params.pageNo" @change-size="changePageSize" @change-page="changPage" :autoScroll="false">
|
||||
</pagination>
|
||||
</div>
|
||||
</div>
|
||||
<div v-if="list.length == 0" class="pagination-div">
|
||||
<span class="notcoures">
|
||||
<img :src="`${webBaseUrl}/images/nocase.png`" alt="">
|
||||
<h5>暂无数据~</h5>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
import timeShow from "@/components/Portal/datetimeShow.vue";
|
||||
import { noticeList } from '@/api/modules/grateful.js'
|
||||
export default {
|
||||
data: () => {
|
||||
return {
|
||||
list: [],
|
||||
total: 0,
|
||||
params: {
|
||||
pageNo: 1,
|
||||
pageSize: 10,
|
||||
},
|
||||
};
|
||||
},
|
||||
components: { timeShow },
|
||||
mounted() {
|
||||
this.getNoticeList()
|
||||
},
|
||||
methods: {
|
||||
getNoticeList() {
|
||||
noticeList(this.params).then((result) => {
|
||||
console.log(result);
|
||||
const { total, records } = result.data
|
||||
this.total = total
|
||||
this.list = records
|
||||
})
|
||||
},
|
||||
noticeDetail(item) {
|
||||
console.log(item);
|
||||
this.$router.push('/grateful/noticeDetail?id=' + item.id)
|
||||
},
|
||||
getPic(index) {
|
||||
return this.webBaseUrl + "/images/listblue0" + (index + 1) + ".png";
|
||||
},
|
||||
changePageSize(pageSize) {
|
||||
this.params.pageSize = pageSize;
|
||||
this.getNoticeList()
|
||||
},
|
||||
changPage(pageNo) {
|
||||
this.params.pageNo = pageNo
|
||||
this.getNoticeList()
|
||||
},
|
||||
},
|
||||
};
|
||||
</script>
|
||||
<style scoped lang='scss'>
|
||||
.nav:hover{
|
||||
color: #387DF7;
|
||||
}
|
||||
.noticeBanner {
|
||||
width: 100%;
|
||||
height: 240px;
|
||||
position: relative;
|
||||
background: url('../../assets/images/grateful/noticeBanner.png') no-repeat;
|
||||
background-size: 100% 100%;
|
||||
|
||||
&::before {
|
||||
content: url(../../assets/images//grateful/noticeLogo.png);
|
||||
position: absolute;
|
||||
top: 20px;
|
||||
left: 40px;
|
||||
}
|
||||
|
||||
&::after {
|
||||
content: '通知';
|
||||
position: absolute;
|
||||
bottom: 25px;
|
||||
left: 180px;
|
||||
color: #387DF7;
|
||||
font-weight: 600;
|
||||
font-size: 64px;
|
||||
}
|
||||
|
||||
img {
|
||||
width: 100%;
|
||||
height: 240px;
|
||||
}
|
||||
}
|
||||
|
||||
.navTop {
|
||||
color: #666;
|
||||
}
|
||||
|
||||
.modules-list {
|
||||
min-height: 682px;
|
||||
background: #ffffff;
|
||||
border-radius: 8px;
|
||||
|
||||
.pagination-div {
|
||||
text-align: center;
|
||||
padding: 70px 0;
|
||||
}
|
||||
|
||||
.bgc {
|
||||
background: linear-gradient(180deg,
|
||||
rgba(56, 125, 247, 0.2) 0%,
|
||||
rgba(166, 168, 255, 0) 100%) no-repeat;
|
||||
background-size: 100% 166px;
|
||||
border-radius: 8px;
|
||||
}
|
||||
|
||||
.toolEvery {
|
||||
height: 56px;
|
||||
line-height: 56px;
|
||||
font-size: 18px;
|
||||
font-weight: 500;
|
||||
color: #333333;
|
||||
border-bottom: 1px solid rgba($color: #999, $alpha: 0.2);
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
cursor: pointer;
|
||||
|
||||
.contnet {
|
||||
font-size: 18px;
|
||||
font-weight: 500;
|
||||
color: #333333;
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
150
src/views/grateful/NoticeDetail.vue
Normal file
@@ -0,0 +1,150 @@
|
||||
<template>
|
||||
<div>
|
||||
<div class="portal-header"></div>
|
||||
<div class="xindex-content" style="padding: 0">
|
||||
<div class="modules xcontent2">
|
||||
<div class="xcontent2-main">
|
||||
<div class="navTop">
|
||||
<div>
|
||||
<router-link to="/grateful" class="nav">首页</router-link> > <router-link
|
||||
to="/grateful/gratefulNotice" class="nav">通知列表</router-link> > <span style="cursor: pointer;"
|
||||
class="nav">通知详情</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- 教师赋能 -->
|
||||
<div class="xindex-content" style="padding: 0">
|
||||
<div class="modules xcontent2">
|
||||
<div class="xcontent2-main">
|
||||
<div class="modules-list" style="margin-top: 0;">
|
||||
<div class="bgc">
|
||||
<div class="title">{{ name }}</div>
|
||||
<!--内容列表内容-->
|
||||
<div class="timeAndAuthor">
|
||||
<div class="author">发布人:{{ createName }}</div>
|
||||
<div class="case-info-date portal-time">
|
||||
<i class="el-icon-time" style="margin-right: 5px;"></i>
|
||||
<time-show :time="createTime"></time-show>
|
||||
</div>
|
||||
</div>
|
||||
<div class="topTitle">通知内容</div>
|
||||
<!-- <div class="noticeContent" style="white-space: pre;">{{ content }}</div> -->
|
||||
<div class="noticeContent" v-html="content"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
import timeShow from "@/components/Portal/datetimeShow.vue";
|
||||
import { noticeDataById } from '@/api/modules/grateful';
|
||||
export default {
|
||||
data: () => {
|
||||
return {
|
||||
content: '',
|
||||
createName: '',
|
||||
createTime: '',
|
||||
name: ''
|
||||
};
|
||||
},
|
||||
components: { timeShow },
|
||||
mounted() {
|
||||
noticeDataById(this.$route.query.id).then((result) => {
|
||||
console.log(result);
|
||||
const { content, createName, createTime, name } = result.data
|
||||
this.content = content
|
||||
this.createTime = createTime
|
||||
this.createName = createName
|
||||
this.name = name
|
||||
})
|
||||
},
|
||||
methods: {
|
||||
noticeDetail(item) {
|
||||
},
|
||||
getPic(index) {
|
||||
return this.webBaseUrl + "/images/listblue0" + (index + 1) + ".png";
|
||||
},
|
||||
changePageSize(pageSize) {
|
||||
this.courseList.pageSize = pageSize;
|
||||
},
|
||||
loadData(pindex) {
|
||||
console.log(pindex);
|
||||
},
|
||||
},
|
||||
};
|
||||
</script>
|
||||
<style scoped lang='scss'>
|
||||
.nav:hover {
|
||||
color: #387DF7;
|
||||
}
|
||||
|
||||
.portal-header {
|
||||
position: relative;
|
||||
height: 72px;
|
||||
background: #0078FC;
|
||||
border: 1px solid rgba(61, 61, 61, 0.15);
|
||||
backdrop-filter: blur(10px);
|
||||
|
||||
&::before {
|
||||
content: url(../../assets/images//grateful/logo.png);
|
||||
position: absolute;
|
||||
left: 40px;
|
||||
top: 20px;
|
||||
}
|
||||
}
|
||||
|
||||
.navTop {
|
||||
color: #666;
|
||||
}
|
||||
|
||||
.modules-list {
|
||||
min-height: 555px;
|
||||
background: #ffffff;
|
||||
border-radius: 8px;
|
||||
|
||||
.bgc {
|
||||
font-size: 18px;
|
||||
font-weight: 600;
|
||||
color: #000000;
|
||||
background: linear-gradient(180deg,
|
||||
rgba(56, 125, 247, 0.2) 0%,
|
||||
rgba(166, 168, 255, 0) 100%) no-repeat;
|
||||
background-size: 100% 166px;
|
||||
border-radius: 8px;
|
||||
padding: 40px 70px;
|
||||
|
||||
.title {
|
||||
padding: 20px;
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
}
|
||||
}
|
||||
|
||||
.timeAndAuthor {
|
||||
padding: 0 20px;
|
||||
|
||||
.author {
|
||||
font-size: 14px;
|
||||
font-weight: 400;
|
||||
color: #333333;
|
||||
margin-bottom: 5px;
|
||||
}
|
||||
}
|
||||
|
||||
.topTitle {
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
font-size: 18px;
|
||||
font-weight: 600;
|
||||
margin-bottom: 30px;
|
||||
}
|
||||
|
||||
.noticeContent {
|
||||
padding: 0 80px;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
501
src/views/grateful/TeacherEmpowerment.vue
Normal file
@@ -0,0 +1,501 @@
|
||||
<template>
|
||||
<div>
|
||||
<div class="empBanner">
|
||||
</div>
|
||||
<div class="xindex-content" style="padding: 0">
|
||||
<div class="modules xcontent2">
|
||||
<div class="xcontent2-main">
|
||||
<div class="navTop">
|
||||
<div>
|
||||
<router-link to="/grateful" class="nav">首页</router-link> >
|
||||
<span style="cursor: pointer;" class="nav">教师赋能</span>
|
||||
</div>
|
||||
<div style="position: relative;">
|
||||
<el-input class="portal-input" placeholder="请输入课程名称" style="border-radius: 20px !important; "
|
||||
@keyup.enter.native="searchJump()" clearable maxlength="50" v-model="param.name">
|
||||
</el-input>
|
||||
<el-button class="sear-but" @click="searchJump()" type="primary" size="mini">搜索</el-button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- 教师赋能 -->
|
||||
<div class="xindex-content" style="padding: 0">
|
||||
<div class="modules xcontent2">
|
||||
<div class="xcontent2-main">
|
||||
<div class="modules-list list" style="margin-top: 0">
|
||||
<!--内容列表内容-->
|
||||
<div v-for="(course, ccidx) in list" :key="'cc' + ccidx" class="xindex-course" style="position: relative">
|
||||
<a @click="toCourseDetail(course)">
|
||||
<div class="xindex-course-image">
|
||||
<course-image :course="course"></course-image>
|
||||
<span v-if="course.type == 20 || course.type == 10" class="course-type">录播课</span>
|
||||
<span v-if="course.type == 30" class="course-type">面授课</span>
|
||||
<span v-if="course.type == 40" class="course-type">学习项目</span>
|
||||
</div>
|
||||
<div style="width: 80%" :title="course.name" v-html="course.name"
|
||||
class="course-title portal-title-tow two-line-ellipsis"></div>
|
||||
<div class="course-author">
|
||||
<div class="course-author-left">
|
||||
{{ course.teacher }}
|
||||
<span class="study-num">{{ formatNum(course.studies) }}人学习</span>
|
||||
</div>
|
||||
<div style="display: flex">
|
||||
<div v-if="course.score != '0'">
|
||||
<span class="course-score-value" style="margin-left: 10px">{{ toScore(Number(course.score))
|
||||
}}分</span>
|
||||
</div>
|
||||
<div v-else class="course-score-no">未评分</div>
|
||||
</div>
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
<div v-if="list.length == 0" class="pagination-div">
|
||||
<span class="notcoures">
|
||||
<img :src="`${webBaseUrl}/images/nocase.png`" alt="">
|
||||
<h5>暂无数据~</h5>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div v-if="list.length !== 0" style="margin-bottom: 45px;">
|
||||
<pagination :size="param.pageSize" :total="total" :page="param.pageNo" @change-size="changePageSize"
|
||||
@change-page="loadData" style="background-color: rgba(0, 0, 0, 0);" :autoScroll="false"
|
||||
:pageSizes="[12, 24, 36, 48]"></pagination>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import apiCourseStudy from "@/api/modules/courseStudy.js";
|
||||
import courseImage from "@/components/Course/courseImage.vue";
|
||||
import { toScore, formatUserNumber } from "@/utils/tools.js";
|
||||
import { courselList } from '@/api/modules/grateful.js'
|
||||
export default {
|
||||
name: "TeacherEmpowerment",
|
||||
components: {
|
||||
courseImage,
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
formatNum: formatUserNumber,
|
||||
toScore,
|
||||
list: [],
|
||||
total: 0,
|
||||
param: {
|
||||
name: '',
|
||||
pageNo: 1,
|
||||
pageSize: 12
|
||||
}
|
||||
};
|
||||
},
|
||||
mounted() {
|
||||
this.getCourseData();
|
||||
},
|
||||
methods: {
|
||||
searchJump() {
|
||||
this.param.pageNo = 1
|
||||
this.getCourseData();
|
||||
},
|
||||
changePageSize(pageSize) {
|
||||
this.param.pageSize = pageSize;
|
||||
this.getCourseData()
|
||||
},
|
||||
loadData(pageNo) {
|
||||
this.param.pageNo = pageNo
|
||||
this.getCourseData()
|
||||
},
|
||||
getPic(index) {
|
||||
return this.webBaseUrl + "/images/listblue0" + (index + 1) + ".png";
|
||||
},
|
||||
toCourseDetail(item) {
|
||||
//二期调整,直接改成一个地址
|
||||
//return this.webBaseUrl + '/course/detail?id=' + item.id;
|
||||
let $this = this;
|
||||
if (item.type == 10) {
|
||||
//return this.webBaseUrl + "/course/studyindex?id=" + item.id;
|
||||
//console.log("直接进入学习页面");
|
||||
this.$router.push("/course/studyindex?id=" + item.courseId);
|
||||
} else if (item.type == 20) {
|
||||
apiCourseStudy.hasSignup(item.courseId).then((rs) => {
|
||||
if (rs.status == 200) {
|
||||
//return $this.webBaseUrl + "/course/studyindex?id=" + item.id;
|
||||
this.$router.push("/course/studyindex?id=" + item.courseId);
|
||||
} else {
|
||||
//return $this.webBaseUrl + "/course/detail?id=" + item.id;
|
||||
this.$router.push("/course/detail?id=" + item.courseId);
|
||||
}
|
||||
});
|
||||
//return $this.webBaseUrl + "/course/detail?id=" + item.id;
|
||||
}
|
||||
},
|
||||
//高亮
|
||||
brightenKeyword(val, keyword) {
|
||||
const Reg = new RegExp(keyword, 'i');
|
||||
let res = '';
|
||||
if (val) {
|
||||
res = val.replace(Reg, `<span style="color: #3e7fff;">${keyword}</span>`);
|
||||
return res;
|
||||
}
|
||||
},
|
||||
getCourseData() {
|
||||
courselList(this.param).then((res) => {
|
||||
if (res.code == 200 && res.data.records.length > 0) {
|
||||
console.log(res.data, '之前的');
|
||||
res.data.records.forEach(item => {
|
||||
item.name = this.brightenKeyword(item.name, this.param.name);
|
||||
});
|
||||
this.list = res.data.records;
|
||||
this.total = res.data.total
|
||||
} else {
|
||||
console.log("加载课程信息失败:" + res.error);
|
||||
}
|
||||
});
|
||||
}
|
||||
},
|
||||
};
|
||||
</script>
|
||||
|
||||
<style scoped lang="scss">
|
||||
.nav:hover {
|
||||
color: #387DF7;
|
||||
}
|
||||
|
||||
.empBanner {
|
||||
width: 100%;
|
||||
height: 240px;
|
||||
position: relative;
|
||||
background: url('../../assets/images/grateful/empBanner.png') no-repeat;
|
||||
background-size: 100% 100%;
|
||||
|
||||
&::before {
|
||||
content: url(../../assets/images//grateful/logo.png);
|
||||
position: absolute;
|
||||
top: 20px;
|
||||
left: 40px;
|
||||
}
|
||||
|
||||
&::after {
|
||||
content: '教师赋能';
|
||||
position: absolute;
|
||||
bottom: 25px;
|
||||
left: 180px;
|
||||
color: #ffffff;
|
||||
font-weight: 600;
|
||||
font-size: 64px;
|
||||
}
|
||||
|
||||
img {
|
||||
width: 100%;
|
||||
height: 240px;
|
||||
}
|
||||
}
|
||||
|
||||
.navTop {
|
||||
color: #666;
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
|
||||
.sear-but {
|
||||
position: absolute;
|
||||
bottom: 10%;
|
||||
right: 5px;
|
||||
}
|
||||
}
|
||||
|
||||
.xindex-course-image:hover {
|
||||
transform: scale(1.2) translateY(-15px);
|
||||
transition: all 0.6s;
|
||||
}
|
||||
|
||||
|
||||
.two-line-ellipsis {
|
||||
display: -webkit-box;
|
||||
overflow: hidden;
|
||||
-webkit-box-orient: vertical;
|
||||
-webkit-line-clamp: 2;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
|
||||
// 内容部分
|
||||
.modules {
|
||||
margin-top: 20px;
|
||||
display: flex;
|
||||
|
||||
.modules-title {
|
||||
.modules-text {
|
||||
height: 28px;
|
||||
font-size: 20px;
|
||||
font-family: PingFangSC-Semibold-, PingFangSC-Semibold;
|
||||
font-weight: 700;
|
||||
color: #333333;
|
||||
}
|
||||
|
||||
.recommend {
|
||||
vertical-align: text-bottom;
|
||||
height: 26px;
|
||||
}
|
||||
|
||||
.quyer-tag {
|
||||
margin-left: 15px;
|
||||
|
||||
a {
|
||||
color: #333333;
|
||||
font-size: 14px;
|
||||
margin: 0 15px;
|
||||
display: inline-block;
|
||||
text-decoration: none;
|
||||
outline: none;
|
||||
}
|
||||
|
||||
.current {
|
||||
width: 44px;
|
||||
height: 26px;
|
||||
background: #387df7;
|
||||
border-radius: 4px;
|
||||
color: #fff;
|
||||
line-height: 26px;
|
||||
text-align: center;
|
||||
}
|
||||
}
|
||||
|
||||
.more {
|
||||
float: right;
|
||||
margin-top: 7px;
|
||||
margin-right: 30px;
|
||||
color: #333333;
|
||||
font-size: 14px;
|
||||
}
|
||||
}
|
||||
|
||||
.pagination-div {
|
||||
text-align: center;
|
||||
padding: 70px 0;
|
||||
}
|
||||
|
||||
.modules-list {
|
||||
margin-top: 30px;
|
||||
|
||||
.case-card {
|
||||
margin-bottom: 15px;
|
||||
|
||||
.case-info-image-box {
|
||||
position: relative;
|
||||
|
||||
.case-info {
|
||||
width: 385px;
|
||||
|
||||
.case-info-title {
|
||||
font-size: 18px;
|
||||
color: #343434;
|
||||
margin-bottom: 5px;
|
||||
|
||||
.case-info-time {
|
||||
font-size: 12px;
|
||||
color: #999999;
|
||||
float: right;
|
||||
margin-top: 8px;
|
||||
}
|
||||
}
|
||||
|
||||
.case-info-summary {
|
||||
font-size: 12px;
|
||||
color: #666666;
|
||||
height: 82px;
|
||||
line-height: 18px;
|
||||
}
|
||||
}
|
||||
|
||||
img {
|
||||
width: 160px;
|
||||
height: 105px;
|
||||
position: absolute;
|
||||
top: 5px;
|
||||
right: 0;
|
||||
}
|
||||
}
|
||||
|
||||
.case-info-box {
|
||||
.case-info {
|
||||
.case-info-title {
|
||||
font-size: 18px;
|
||||
color: #343434;
|
||||
margin-bottom: 5px;
|
||||
|
||||
.case-info-time {
|
||||
font-size: 12px;
|
||||
color: #999999;
|
||||
float: right;
|
||||
margin-top: 8px;
|
||||
}
|
||||
}
|
||||
|
||||
.case-info-summary {
|
||||
font-size: 12px;
|
||||
color: #666666;
|
||||
height: 82px;
|
||||
line-height: 18px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.case-other-info {
|
||||
height: 40px;
|
||||
margin-top: 10px;
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
}
|
||||
}
|
||||
|
||||
.article-card {
|
||||
background: #fff;
|
||||
border-radius: 8px;
|
||||
|
||||
.article-card-left {
|
||||
.article-card-box {
|
||||
.article-info-image-box {
|
||||
border-radius: 4px;
|
||||
|
||||
.article-info {
|
||||
height: 400px;
|
||||
|
||||
.article-info-title {
|
||||
font-size: 16px;
|
||||
color: #00253e;
|
||||
font-weight: 500;
|
||||
margin-bottom: 5px;
|
||||
margin-top: 5px;
|
||||
}
|
||||
|
||||
.article-info-summary {
|
||||
font-size: 14px;
|
||||
color: #6e7b84;
|
||||
height: 160px;
|
||||
line-height: 22px;
|
||||
}
|
||||
}
|
||||
|
||||
img {
|
||||
width: 470px;
|
||||
height: 330px;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.article-card-right {
|
||||
flex: 1;
|
||||
margin-left: 28px;
|
||||
|
||||
.article-card-box {
|
||||
margin-bottom: 16px;
|
||||
padding-bottom: 16px;
|
||||
|
||||
&:last-child {
|
||||
margin-bottom: 0px;
|
||||
padding-bottom: 0px;
|
||||
}
|
||||
|
||||
.article-info-box {
|
||||
.article-info {
|
||||
display: flex;
|
||||
|
||||
.article-image {
|
||||
width: 140px;
|
||||
height: 105px;
|
||||
margin-top: 10px;
|
||||
margin-left: 20px;
|
||||
}
|
||||
|
||||
.article-body {
|
||||
flex: 1;
|
||||
|
||||
.article-info-title {
|
||||
font-size: 18px;
|
||||
color: #343434;
|
||||
margin-bottom: 5px;
|
||||
|
||||
.article-info-time {
|
||||
font-size: 12px;
|
||||
color: #999999;
|
||||
float: right;
|
||||
margin-top: 8px;
|
||||
font-weight: 500;
|
||||
}
|
||||
}
|
||||
|
||||
.article-info-summary {
|
||||
padding-top: 9px;
|
||||
font-size: 14px;
|
||||
color: #666666;
|
||||
height: 43px;
|
||||
line-height: 18px;
|
||||
font-weight: 500;
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.article-card-box:not(:last-child) {
|
||||
border-bottom: 1px solid #ededed;
|
||||
}
|
||||
}
|
||||
|
||||
.article-other-info {
|
||||
display: flex;
|
||||
}
|
||||
}
|
||||
|
||||
.qa-card {
|
||||
box-sizing: border-box;
|
||||
box-shadow: 0px 2px 12px 0px rgba(0, 0, 0, 0.05);
|
||||
border-radius: 8px;
|
||||
background: #fff;
|
||||
|
||||
&:last-child {
|
||||
margin-right: 0;
|
||||
}
|
||||
|
||||
.qa-top {
|
||||
& span:first-child {
|
||||
height: 24px;
|
||||
background: rgba($color: #387df7, $alpha: 0.05);
|
||||
border-radius: 4px;
|
||||
font-size: 12px;
|
||||
color: #387df7;
|
||||
}
|
||||
|
||||
span {
|
||||
color: #6e7b84;
|
||||
}
|
||||
}
|
||||
|
||||
.qa-center {
|
||||
position: relative;
|
||||
background: rgba($color: #04243c, $alpha: 0.04);
|
||||
border-radius: 4px;
|
||||
|
||||
.qa-views {
|
||||
position: absolute;
|
||||
color: #6e7b84;
|
||||
}
|
||||
}
|
||||
|
||||
.qa-char {
|
||||
display: flex;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.list {
|
||||
display: grid;
|
||||
justify-content: space-between;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
180
src/views/grateful/TeacherOpinion.vue
Normal file
@@ -0,0 +1,180 @@
|
||||
<template>
|
||||
<div>
|
||||
<div class="opinionBanner">
|
||||
</div>
|
||||
<div class="xindex-content" style="padding: 0">
|
||||
<div class="modules xcontent2">
|
||||
<div class="xcontent2-main">
|
||||
<div class="navTop">
|
||||
<div>
|
||||
<router-link to="/grateful" class="nav">首页</router-link> >
|
||||
<span style="cursor: pointer;" class="nav">认证讲师库(2023)</span>
|
||||
</div>
|
||||
<div style="position: relative;">
|
||||
<el-input class="portal-input" placeholder="请输入课程名称" style="border-radius: 20px !important; "
|
||||
@keyup.enter.native="searchJump()" clearable maxlength="50" v-model="params.courseName">
|
||||
</el-input>
|
||||
<el-button class="sear-but" @click="searchJump()" type="primary" size="mini">搜索</el-button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- 教师赋能 -->
|
||||
<div class="xindex-content" style="padding: 0">
|
||||
<div class="modules xcontent2">
|
||||
<div class="xcontent2-main" style="width: 100%;">
|
||||
<div class="modules-list" style="margin-top: 0;">
|
||||
<div class="content">
|
||||
<div style="min-height: 485px;width: 100%;">
|
||||
<el-table style="width: 100%;" :data="list" stripe border>
|
||||
<el-table-column label="课程名称" prop="courseName" align="center" show-overflow-tooltip></el-table-column>
|
||||
<el-table-column label="课程价值" prop="meaning" align="center" show-overflow-tooltip></el-table-column>
|
||||
<el-table-column label="教师名称" prop="teacherName" align="center" min-width="50"></el-table-column>
|
||||
<el-table-column label="教师工号" prop="teacherNo" align="center" min-width="50" fixed="right"></el-table-column>
|
||||
</el-table>
|
||||
</div>
|
||||
<div v-if="list.length > 0" style="text-align: center;margin-top: 50px;">
|
||||
<pagination style="background-color: rgba(0, 0, 0, 0);" :size="params.pageSize" :total="total"
|
||||
:page="params.pageNo" @change-size="changePageSize" @change-page="loadData" :autoScroll="false">
|
||||
</pagination>
|
||||
</div>
|
||||
<div v-if="list.length == 0" class="pagination-div">
|
||||
<span class="notcoures">
|
||||
<img :src="`${webBaseUrl}/images/nocase.png`" alt="">
|
||||
<h5>暂无数据~</h5>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
import timeShow from "@/components/Portal/datetimeShow.vue";
|
||||
import { teachersList } from "../../api/modules/grateful";
|
||||
export default {
|
||||
data: () => {
|
||||
return {
|
||||
total: 0,
|
||||
list: [],
|
||||
params: {
|
||||
pageNo: 1,
|
||||
pageSize: 10,
|
||||
courseName: '',
|
||||
}
|
||||
};
|
||||
},
|
||||
components: { timeShow },
|
||||
mounted() {
|
||||
this.getTeachersList()
|
||||
},
|
||||
methods: {
|
||||
getTeachersList() {
|
||||
teachersList(this.params).then((result) => {
|
||||
console.log(result);
|
||||
const { total, records } = result.data
|
||||
this.total = total;
|
||||
this.list = records;
|
||||
})
|
||||
},
|
||||
searchJump() {
|
||||
this.params.pageNo = 1
|
||||
this.getTeachersList()
|
||||
},
|
||||
loadData(pageNo) {
|
||||
this.params.pageNo = pageNo
|
||||
this.getTeachersList()
|
||||
},
|
||||
getPic(index) {
|
||||
return this.webBaseUrl + "/images/listblue0" + (index + 1) + ".png";
|
||||
},
|
||||
changePageSize(pageSize) {
|
||||
this.params.pageSize = pageSize;
|
||||
this.getTeachersList()
|
||||
},
|
||||
},
|
||||
};
|
||||
</script>
|
||||
<style scoped lang='scss'>
|
||||
.nav:hover {
|
||||
color: #387DF7;
|
||||
}
|
||||
|
||||
.opinionBanner {
|
||||
width: 100%;
|
||||
height: 240px;
|
||||
position: relative;
|
||||
background: url('../../assets/images/grateful/opinionBanner.png');
|
||||
// background-size: 100% 100%;
|
||||
|
||||
&::before {
|
||||
content: url(../../assets/images//grateful/logo.png);
|
||||
position: absolute;
|
||||
top: 20px;
|
||||
left: 40px;
|
||||
}
|
||||
|
||||
&::after {
|
||||
content: '认证讲师库(2023)';
|
||||
position: absolute;
|
||||
bottom: 25px;
|
||||
left: 180px;
|
||||
color: #ffffff;
|
||||
font-weight: 600;
|
||||
font-size: 64px;
|
||||
}
|
||||
|
||||
img {
|
||||
width: 100%;
|
||||
height: 240px;
|
||||
}
|
||||
}
|
||||
|
||||
.navTop {
|
||||
color: #666;
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
|
||||
.sear-but {
|
||||
position: absolute;
|
||||
bottom: 10%;
|
||||
right: 5px;
|
||||
}
|
||||
}
|
||||
|
||||
.modules-list {
|
||||
min-height: 667px;
|
||||
background: #ffffff;
|
||||
border-radius: 8px;
|
||||
|
||||
.content {
|
||||
padding: 40px 70px;
|
||||
background: linear-gradient(180deg,
|
||||
rgba(56, 125, 247, 0.2) 0%,
|
||||
rgba(166, 168, 255, 0) 100%) no-repeat;
|
||||
background-size: 100% 166px;
|
||||
border-radius: 8px;
|
||||
|
||||
.pagination-div {
|
||||
text-align: center;
|
||||
padding: 70px 0;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
.pagination-div {
|
||||
text-align: center;
|
||||
padding: 70px 0;
|
||||
}
|
||||
|
||||
|
||||
.sear-but {
|
||||
position: absolute;
|
||||
bottom: 10%;
|
||||
right: 5px;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
194
src/views/grateful/ToolDown.vue
Normal file
@@ -0,0 +1,194 @@
|
||||
<template>
|
||||
<div>
|
||||
<div class="toolBanner">
|
||||
<div class="portal-header"></div>
|
||||
</div>
|
||||
<div class="xindex-content" style="padding: 0">
|
||||
<div class="modules xcontent2">
|
||||
<div class="xcontent2-main">
|
||||
<div class="navTop">
|
||||
<div>
|
||||
<router-link to="/grateful" class="nav">首页</router-link> >
|
||||
<span style="cursor: pointer;" class="nav">下载工具</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- 教师赋能 -->
|
||||
<div class="xindex-content" style="padding: 0">
|
||||
<div class="modules xcontent2">
|
||||
<div class="xcontent2-main">
|
||||
<div class="modules-list" style="margin-top: 0;">
|
||||
<div v-if="total > 0" style="padding: 20px 70px;border-radius: 8px 8px 0 0;min-height: 600px;" class="bgc">
|
||||
<!--内容列表内容-->
|
||||
<div v-for="(tool, index) in list" :key="'cc' + index" class="toolEvery">
|
||||
<div class="contnet">
|
||||
{{ tool.name.split('.')[0] }}
|
||||
</div>
|
||||
<div class="btn">
|
||||
<el-button @click="downLoad(tool)">立即下载</el-button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div>
|
||||
<pagination :size="params.pageSize" :total="total" :page="params.pageIndex" @change-size="changePageSize"
|
||||
@change-page="loadData" :autoScroll="false">
|
||||
</pagination>
|
||||
</div>
|
||||
<div v-if="list.length == 0" class="pagination-div">
|
||||
<span class="notcoures">
|
||||
<img :src="`${webBaseUrl}/images/nocase.png`" alt="">
|
||||
<h5>暂无工具~</h5>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
import { toolList, toolDown } from '../../api/modules/grateful';
|
||||
export default {
|
||||
data: () => {
|
||||
return {
|
||||
list: [],
|
||||
total: 0,
|
||||
params: {
|
||||
pageNo: 1,
|
||||
pageSize: 10,
|
||||
}
|
||||
};
|
||||
},
|
||||
mounted() {
|
||||
this.getToolList()
|
||||
},
|
||||
methods: {
|
||||
async getToolList() {
|
||||
const result = await toolList(this.params)
|
||||
if (result.code === 200) {
|
||||
const { total, records } = result.data
|
||||
this.list = records
|
||||
this.total = total
|
||||
}
|
||||
},
|
||||
downLoad(toolInfo) {
|
||||
console.log(toolInfo);
|
||||
window.open(`/activityApi/xboe/m/boe/tools/url/download?urlStr=${process.env.VUE_APP_BOE_WEB_URL}/upload${toolInfo.filePath}&fileName=${toolInfo.name}`)
|
||||
// toolDown({
|
||||
// urlStr: `${process.env.VUE_APP_BOE_WEB_URL}/upload${toolInfo.filePath}`,
|
||||
// fileName: toolInfo.name
|
||||
// }).then((result) => {
|
||||
// const link = document.createElement('a');// 创建a标签
|
||||
// let blob = new Blob([result.data], { type: '' }); // 设置文件类型
|
||||
// link.style.display = "none";
|
||||
// link.href = URL.createObjectURL(blob); // 创建URL
|
||||
// link.setAttribute("download", `${toolInfo.name}`);
|
||||
// document.body.appendChild(link);
|
||||
// link.click();
|
||||
// URL.revokeObjectURL(link.href);
|
||||
// document.body.removeChild(link);
|
||||
// })
|
||||
},
|
||||
getPic(index) {
|
||||
return this.webBaseUrl + "/images/listblue0" + (index + 1) + ".png";
|
||||
},
|
||||
changePageSize(pageSize) {
|
||||
this.params.pageSize = pageSize;
|
||||
this.getToolList()
|
||||
},
|
||||
loadData(pageNo) {
|
||||
this.params.pageNo = pageNo;
|
||||
this.getToolList()
|
||||
},
|
||||
},
|
||||
};
|
||||
</script>
|
||||
<style scoped lang='scss'>
|
||||
.nav:hover {
|
||||
color: #387DF7;
|
||||
}
|
||||
|
||||
.toolBanner {
|
||||
width: 100%;
|
||||
height: 240px;
|
||||
position: relative;
|
||||
background: url('../../assets/images/grateful/toolBanner.png') no-repeat;
|
||||
background-size: 100% 100%;
|
||||
|
||||
&::after {
|
||||
content: '下载工具';
|
||||
position: absolute;
|
||||
bottom: 25px;
|
||||
left: 180px;
|
||||
color: #ffffff;
|
||||
font-weight: 600;
|
||||
font-size: 64px;
|
||||
}
|
||||
|
||||
.portal-header {
|
||||
position: relative;
|
||||
height: 72px;
|
||||
background: rgba(255, 255, 255, 0.1);
|
||||
border: 1px solid rgba(61, 61, 61, 0.15);
|
||||
backdrop-filter: blur(10px);
|
||||
|
||||
&::before {
|
||||
content: url(../../assets/images//grateful/logo.png);
|
||||
position: absolute;
|
||||
left: 40px;
|
||||
top: 20px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.navTop {
|
||||
color: #666;
|
||||
}
|
||||
|
||||
.bgc {
|
||||
background: linear-gradient(180deg,
|
||||
rgba(56, 125, 247, 0.2) 0%,
|
||||
rgba(166, 168, 255, 0) 100%) no-repeat;
|
||||
background-size: 100% 166px;
|
||||
border-radius: 8px;
|
||||
}
|
||||
|
||||
.modules-list {
|
||||
min-height: 682px;
|
||||
background: #ffffff;
|
||||
border-radius: 8px;
|
||||
|
||||
.pagination-div {
|
||||
text-align: center;
|
||||
padding: 70px 0;
|
||||
}
|
||||
|
||||
|
||||
|
||||
.toolEvery {
|
||||
height: 56px;
|
||||
line-height: 56px;
|
||||
font-size: 18px;
|
||||
font-weight: 500;
|
||||
color: #333333;
|
||||
border-bottom: 1px solid rgba($color: #999, $alpha: 0.2);
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
|
||||
.btn {
|
||||
button {
|
||||
width: 140px;
|
||||
height: 40px;
|
||||
background: #387df7;
|
||||
border: 0;
|
||||
box-shadow: 1px 2px 8px 1px rgba(56, 125, 247, 0.3);
|
||||
border-radius: 4px;
|
||||
color: #ffffff;
|
||||
line-height: 22px;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
72
src/views/grateful/index.vue
Normal file
@@ -0,0 +1,72 @@
|
||||
<template>
|
||||
<div class="main">
|
||||
<!-- <div class="mianRouter"> -->
|
||||
<router-view></router-view>
|
||||
<!-- </div> -->
|
||||
<!-- 底部 -->
|
||||
<div class="grateful">
|
||||
<img src="../../assets/images/grateful/gratefulFooter.png" alt="" />
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
name: "Grateful",
|
||||
data() {
|
||||
return {
|
||||
};
|
||||
}
|
||||
};
|
||||
</script>
|
||||
|
||||
<style scoped lang="scss">
|
||||
.main {
|
||||
background-color: #f2F5F7;
|
||||
// height: 100%;
|
||||
// display: flex;
|
||||
// flex-direction: column;
|
||||
|
||||
// .mianRouter {
|
||||
// flex: 1;
|
||||
// }
|
||||
}
|
||||
|
||||
.grateful {
|
||||
width: 100%;
|
||||
|
||||
img {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
}
|
||||
|
||||
.header {
|
||||
height: 240px;
|
||||
background: url('../../../public/images/courseBg.png') no-repeat;
|
||||
background-size: 100% 100%;
|
||||
|
||||
.portal-header {
|
||||
height: 72px;
|
||||
display: flex;
|
||||
background: rgba(255, 255, 255, 0.1);
|
||||
border: 1px solid rgba(61, 61, 61, 0.15);
|
||||
backdrop-filter: blur(10px);
|
||||
|
||||
.portal-top {
|
||||
width: 100%;
|
||||
margin: 0px 40px;
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
|
||||
.portal-top-left {
|
||||
display: flex;
|
||||
justify-content: flex-start;
|
||||
align-items: center;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
</style>
|
||||
@@ -231,10 +231,8 @@ export default {
|
||||
this.allRequests()
|
||||
},
|
||||
|
||||
|
||||
|
||||
beforeRouteEnter(to, from, next) {
|
||||
console.log(from, '哈哈哈');
|
||||
console.log(to, '嘿嘿');
|
||||
let time = new Date().getTime()
|
||||
sessionStorage.setItem('startTime', time)
|
||||
next()
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
<template>
|
||||
<div id="couser-list-content" class="couser-list-content">
|
||||
<div class="course-banner">
|
||||
<portal-header current="course" textColor="#fff" :keywords="keyword" @emitInput="emitInput" @showClass="showClass"></portal-header>
|
||||
<portal-header current="course" textColor="#fff" :keywords="keyword" @emitInput="emitInput"
|
||||
@showClass="showClass"></portal-header>
|
||||
</div>
|
||||
<div style="padding-top:30px">
|
||||
<div class="xcontent2">
|
||||
@@ -394,7 +395,7 @@
|
||||
</template>
|
||||
<!-- 线上品牌系列课程 -->
|
||||
<template v-if="newData">
|
||||
<div class="xcourse-card" style="margin-bottom: 0;margin-top: 36px;" v-for="(cinfo, cidx) in courseList" :key="cinfo.id">
|
||||
<div class="xcourse-card" v-for="cinfo in courseList" :key="cinfo.id" style="margin-bottom: 0;margin-top: 36px;">
|
||||
<div class="course-card" style="padding: 10px;">
|
||||
<a @click="() => $message.success('如需了解详情,请联系BOEU')">
|
||||
<div class="course-img-box">
|
||||
@@ -615,7 +616,7 @@ export default {
|
||||
oneList: [], //一级分类{type:11}
|
||||
twoList: [], //二级分类{type:12}
|
||||
threeList: [],//三级分类{type:13}
|
||||
searching:false,//是否正在搜索中
|
||||
searching: false,//是否正在搜索中
|
||||
|
||||
resonimg: {},
|
||||
formatDate,
|
||||
@@ -631,7 +632,7 @@ export default {
|
||||
// 查询信息
|
||||
course: {
|
||||
orderField: "studys",
|
||||
companyId:'',
|
||||
companyId: '',
|
||||
keyword: '',//关键词
|
||||
topOrder: true,
|
||||
orderAsc: false,
|
||||
@@ -666,12 +667,12 @@ export default {
|
||||
created() {
|
||||
let localKey = "user_" + this.userInfo.sysId + "_gids";
|
||||
apiUserbasic.getInAudienceIds().then(rs => {
|
||||
if (rs.status == 200) {
|
||||
this.audiences = rs.result;
|
||||
sessionStorage.setItem(localKey, this.audiences);
|
||||
} else {
|
||||
console.log(rs.message);
|
||||
}
|
||||
if (rs.status == 200) {
|
||||
this.audiences = rs.result;
|
||||
sessionStorage.setItem(localKey, this.audiences);
|
||||
} else {
|
||||
console.log(rs.message);
|
||||
}
|
||||
})
|
||||
},
|
||||
mounted() {
|
||||
@@ -799,37 +800,37 @@ export default {
|
||||
let hasData = sessionStorage.getItem(this.localSessionKey);
|
||||
let $this = this;
|
||||
if (hasData) {
|
||||
let typeCodeList=JSON.parse(hasData);
|
||||
typeCodeList.forEach(item=>{
|
||||
if(item.type==0){
|
||||
this.keyword=item.name;
|
||||
}else if(item.type==1){
|
||||
if(item.id==20){
|
||||
$this.ctypeList[0].checked=true;
|
||||
}else if(item.id==30){
|
||||
$this.ctypeList[1].checked=true;
|
||||
}else if(item.id==40){
|
||||
$this.ctypeList[2].checked=true;
|
||||
let typeCodeList = JSON.parse(hasData);
|
||||
typeCodeList.forEach(item => {
|
||||
if (item.type == 0) {
|
||||
this.keyword = item.name;
|
||||
} else if (item.type == 1) {
|
||||
if (item.id == 20) {
|
||||
$this.ctypeList[0].checked = true;
|
||||
} else if (item.id == 30) {
|
||||
$this.ctypeList[1].checked = true;
|
||||
} else if (item.id == 40) {
|
||||
$this.ctypeList[2].checked = true;
|
||||
}
|
||||
} else { //三级分类的处理,如果一个分类选中多个,显示哪个,显示第一个,是否可以
|
||||
this.oneList.forEach(one => {
|
||||
if (one.id == item.id && item.type == '11') {
|
||||
this.navTitle = [{ ...one }]
|
||||
one.checked = true
|
||||
}
|
||||
}else{ //三级分类的处理,如果一个分类选中多个,显示哪个,显示第一个,是否可以
|
||||
this.oneList.forEach(one => {
|
||||
if(one.id == item.id && item.type == '11'){
|
||||
this.navTitle = [{ ...one }]
|
||||
one.checked = true
|
||||
one.children.forEach(two => {
|
||||
if (two.id == item.id && item.type == '12') {
|
||||
this.navTitle = [{ ...one }, { ...two }]
|
||||
two.checked = true
|
||||
}
|
||||
one.children.forEach(two => {
|
||||
if(two.id == item.id && item.type == '12'){
|
||||
this.navTitle = [{ ...one }, { ...two }]
|
||||
two.checked = true
|
||||
}
|
||||
two.children.forEach(three => {
|
||||
if(three.id == item.id && item.type == '13'){
|
||||
this.navTitle = [{ ...one }, { ...two }, { ...three }]
|
||||
three.checked = true
|
||||
}
|
||||
})
|
||||
two.children.forEach(three => {
|
||||
if (three.id == item.id && item.type == '13') {
|
||||
this.navTitle = [{ ...one }, { ...two }, { ...three }]
|
||||
three.checked = true
|
||||
}
|
||||
})
|
||||
})
|
||||
})
|
||||
}
|
||||
})
|
||||
}
|
||||
@@ -1010,16 +1011,16 @@ export default {
|
||||
// });
|
||||
// }
|
||||
// })
|
||||
this.oneList.forEach(one=>{
|
||||
if(one.checked){
|
||||
one.children.forEach(two=>{
|
||||
$this.twoList.push(two);
|
||||
if(two.checked){
|
||||
two.children.forEach(three=>{
|
||||
$this.threeList.push(three);
|
||||
})
|
||||
}
|
||||
});
|
||||
this.oneList.forEach(one => {
|
||||
if (one.checked) {
|
||||
one.children.forEach(two => {
|
||||
$this.twoList.push(two);
|
||||
if (two.checked) {
|
||||
two.children.forEach(three => {
|
||||
$this.threeList.push(three);
|
||||
})
|
||||
}
|
||||
});
|
||||
}
|
||||
})
|
||||
},
|
||||
@@ -1318,11 +1319,11 @@ export default {
|
||||
// 查询
|
||||
async search() {
|
||||
//
|
||||
if(this.searching){
|
||||
if (this.searching) {
|
||||
this.$message.warning("正在搜索中,请待搜索完成后再重新搜索");
|
||||
return;
|
||||
}
|
||||
this.searching=true;
|
||||
this.searching = true;
|
||||
//测试时间格式化
|
||||
// let s=1650973801;
|
||||
// var d = new Date(1650973801*1000);
|
||||
@@ -1370,11 +1371,11 @@ export default {
|
||||
let isTopList = [];
|
||||
// 隐藏loadMore
|
||||
this.moreState = 2;
|
||||
await apiCoursePortal.courseSearch(this.course).then(res => {
|
||||
this.searching=false;
|
||||
if (res.status == 200) {
|
||||
this.totalPages = res.result.totalPages;
|
||||
res.result.list.forEach(item => {
|
||||
await apiCoursePortal.courseSearch(this.course).then(res => {
|
||||
this.searching = false;
|
||||
if (res.status == 200) {
|
||||
this.totalPages = res.result.totalPages;
|
||||
res.result.list.forEach(item => {
|
||||
if (item.startTime != '') {
|
||||
item.startTime = formatDateByFmt(new Date(item.startTime * 1000), 'yyyy-MM-dd hh:mm')
|
||||
//let time = item.startTime.split('-');
|
||||
@@ -1407,50 +1408,50 @@ export default {
|
||||
if (this.newData) {
|
||||
this.courseList = [
|
||||
{
|
||||
audiences: "",
|
||||
companyId: "",
|
||||
coverImg: "",
|
||||
createdAt: "",
|
||||
device: 3,
|
||||
domainIds: "",
|
||||
duration: 7,
|
||||
endTime: "",
|
||||
esId: "Z4LAbYkBfn0lSHQ9acXX",
|
||||
id: "1091051270927183872",
|
||||
isSetAudience: 0,
|
||||
isTop: 0,
|
||||
keywords: "回归,新建,在线,课程",
|
||||
keywordsList: ['回归', '新建', '在线', '课程'],
|
||||
maxDuration: "",
|
||||
name: "人力资源知识技能晋升(人力资源总监空降现场,为各位答疑解惑",
|
||||
openCourse: 0,
|
||||
openEnroll: 0,
|
||||
orderType: "",
|
||||
publishTime: 1689748779,
|
||||
resOwner: "",
|
||||
score: 5,
|
||||
source: 2,
|
||||
startTime: "",
|
||||
studies: 2,
|
||||
studiesFormat: "",
|
||||
summary: "",
|
||||
sysType1: "966458733088919552",
|
||||
sysType2: "966459050400600064",
|
||||
sysType3: "1060578278816509959",
|
||||
tags: "",
|
||||
teacher: "张学智",
|
||||
teacherCode: "",
|
||||
title: "BOE",
|
||||
topTime: "",
|
||||
type: 20,
|
||||
types: "",
|
||||
remark: '备注备注备注备注备注备注备注备注备注备注备注备注备注备注备注备注备注备注备注备注备'
|
||||
audiences: "",
|
||||
companyId: "",
|
||||
coverImg: "",
|
||||
createdAt: "",
|
||||
device: 3,
|
||||
domainIds: "",
|
||||
duration: 7,
|
||||
endTime: "",
|
||||
esId: "Z4LAbYkBfn0lSHQ9acXX",
|
||||
id: "1091051270927183872",
|
||||
isSetAudience: 0,
|
||||
isTop: 0,
|
||||
keywords: "回归,新建,在线,课程",
|
||||
keywordsList: ['回归', '新建', '在线', '课程'],
|
||||
maxDuration: "",
|
||||
name: "人力资源知识技能晋升(人力资源总监空降现场,为各位答疑解惑",
|
||||
openCourse: 0,
|
||||
openEnroll: 0,
|
||||
orderType: "",
|
||||
publishTime: 1689748779,
|
||||
resOwner: "",
|
||||
score: 5,
|
||||
source: 2,
|
||||
startTime: "",
|
||||
studies: 2,
|
||||
studiesFormat: "",
|
||||
summary: "",
|
||||
sysType1: "966458733088919552",
|
||||
sysType2: "966459050400600064",
|
||||
sysType3: "1060578278816509959",
|
||||
tags: "",
|
||||
teacher: "张学智",
|
||||
teacherCode: "",
|
||||
title: "BOE",
|
||||
topTime: "",
|
||||
type: 20,
|
||||
types: "",
|
||||
remark: '备注备注备注备注备注备注备注备注备注备注备注备注备注备注备注备注备注备注备注备注备'
|
||||
},
|
||||
]
|
||||
}
|
||||
this.count = res?.result?.count
|
||||
if(this.newData) {
|
||||
this.count = 1
|
||||
if (this.newData) {
|
||||
this.count = 1
|
||||
}
|
||||
this.moreState = 3
|
||||
} else {
|
||||
@@ -1553,9 +1554,10 @@ export default {
|
||||
</script>
|
||||
|
||||
<style scoped lang="scss">
|
||||
.couser-list-content{
|
||||
.couser-list-content {
|
||||
min-height: 110%;
|
||||
}
|
||||
|
||||
// 标题
|
||||
.navTitle {
|
||||
margin-bottom: 20px;
|
||||
@@ -2388,5 +2390,4 @@ export default {
|
||||
|
||||
.option-active {
|
||||
color: #387DF7;
|
||||
}
|
||||
</style>
|
||||
}</style>
|
||||
|
||||
@@ -128,12 +128,13 @@ module.exports = {
|
||||
},
|
||||
'/systemapi': {
|
||||
// 目标代理服务器地址
|
||||
target: 'http://127.0.0.1:9090',
|
||||
// target: 'http://127.0.0.1:9090',
|
||||
target: 'https://u-pre.boe.com',
|
||||
changeOrigin: true,
|
||||
logLevel:'debug',
|
||||
secure: false,
|
||||
pathRewrite: {
|
||||
'^/systemapi': ''
|
||||
// '^/systemapi': ''
|
||||
}
|
||||
},
|
||||
'/uboeApi': {
|
||||
@@ -156,22 +157,24 @@ module.exports = {
|
||||
},
|
||||
'/statApi': {
|
||||
// 目标代理服务器地址
|
||||
target: 'http://127.0.0.1:9080',
|
||||
// target: 'http://127.0.0.1:9080',
|
||||
target: 'https://u-pre.boe.com',
|
||||
changeOrigin: true,
|
||||
logLevel:'debug',
|
||||
secure: false,
|
||||
pathRewrite: {
|
||||
'^/statApi': ''
|
||||
// '^/statApi': ''
|
||||
}
|
||||
},
|
||||
'/socialApi': {
|
||||
// 目标代理服务器地址
|
||||
target: 'http://127.0.0.1:9081',
|
||||
// target: 'http://127.0.0.1:9081',
|
||||
target: 'https://u-pre.boe.com',
|
||||
changeOrigin: true,
|
||||
logLevel:'debug',
|
||||
secure: false,
|
||||
pathRewrite: {
|
||||
'^/socialApi': ''
|
||||
// '^/socialApi': ''
|
||||
}
|
||||
},
|
||||
'/report': {
|
||||
@@ -183,13 +186,25 @@ module.exports = {
|
||||
'^/report': '/report'
|
||||
}
|
||||
},
|
||||
'/infrasApi': {
|
||||
// 目标代理服务器地址
|
||||
target: 'https://u-pre.boe.com',
|
||||
changeOrigin: true,
|
||||
secure: false,
|
||||
},
|
||||
'/activityApi': {
|
||||
// 目标代理服务器地址
|
||||
target: 'https://u-pre.boe.com',
|
||||
changeOrigin: true,
|
||||
secure: false,
|
||||
},
|
||||
},
|
||||
},
|
||||
|
||||
|
||||
css: {
|
||||
extract: {
|
||||
ignoreOrder: true
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||