资讯等联调

alioss
yujialong 3 years ago
parent 5fff357384
commit 7fa12b10f9
  1. 36
      src/api/index.js
  2. BIN
      src/assets/img/zxy/banner-bg1-1.png
  3. BIN
      src/assets/img/zxy/banner-bg1-2.png
  4. BIN
      src/assets/img/zxy/banner-bg2-1.png
  5. BIN
      src/assets/img/zxy/banner-bg2-2.png
  6. BIN
      src/assets/img/zxy/banner-bg3-1.png
  7. BIN
      src/assets/img/zxy/banner1.png
  8. BIN
      src/assets/img/zxy/banner2.png
  9. BIN
      src/assets/img/zxy/banner3.png
  10. BIN
      src/assets/img/zxy/name.png
  11. 35
      src/components/menuTree/index.vue
  12. 2
      src/layouts/header/index.vue
  13. 37
      src/layouts/navbar/index.vue
  14. 19
      src/pages/course/details/index.vue
  15. 170
      src/pages/course/list/index.vue
  16. 64
      src/pages/index/zxy/index.vue
  17. 3
      src/pages/info/details/index.vue
  18. 99
      src/pages/info/list/index.vue
  19. 67
      src/pages/product/list/index.vue
  20. 2
      src/pages/screen/index.vue
  21. 9
      src/pages/station/preview/index.vue
  22. 34
      src/router/modules/course.js
  23. 34
      src/router/modules/info.js
  24. 5
      src/setting.js
  25. 2
      src/styles/page/screen.scss

@ -1,6 +1,7 @@
import Setting from "@/setting";
const host = Setting.apiBaseURL;
const host = Setting.apiBaseURL
const host1 = 'http://192.168.31.137:9000/'
const uploadURL = location.origin + '/'
export default {
@ -61,31 +62,28 @@ export default {
collectPaper: `occupationlab/occupationlab/assessment/collectPaper`, // 自动结束考试
// 课程学习
queryGlClassification: `occupationlab/occupationlab/management/edu/courseClassification/queryGlClassification`, // 查询课程分类
queryCourseByCondition: `occupationlab/occupationlab/management/edu/course/queryCourseByCondition`, // 课程列表分页条件查询
getCourseById: `occupationlab/occupationlab/management/edu/course/getCourse`, // 根据id查询课程
queryChaptersAndSubsections: `occupationlab/occupationlab/management/edu/courseChapter/queryChaptersAndSubsections`, // 根据课程id查询章节小节,树状结构
getSubsection: `occupationlab/occupationlab/management/edu/courseSubsection/getSubsection`, // 根据小节id获取预览文件地址
pageConditionalQueryCourseByStudent: `occupationlab/occupationlab/theoreticalCourse/pageConditionalQueryCourseByStudent`,
listClassification: `occupationlab/occupationlab/theoreticalCourseClassification/pagingQuery`,
findByIdCourse: `occupationlab/occupationlab/theoreticalCourse/findById`,
playRecordSave: `occupationlab/occupationlab/playRecord/save`,
// 资讯
queryAllColumns: `occupationlab/occupationlab/enterprise/information/column/queryAllColumns`, // 栏目树
queryArticleByCondition: `occupationlab/occupationlab/enterprise/information/article/queryArticleByCondition`, // 文章列表分页条件查询
getArticle: `occupationlab/occupationlab/enterprise/information/article/getArticle`, // 根据id查询文章
firstLevelColumn: `occupationlab/occupationlab/enterprise/information/column/firstLevelColumn`,
secondaryColumnsByFirst: `occupationlab/occupationlab/enterprise/information/column/secondaryColumnsByFirst`,
queryAllColumns: `${host1}occupationlab/occupationlab/information/column/queryAllColumns`, // 栏目树
queryArticleByCondition: `${host1}occupationlab/occupationlab/information/article/queryArticleByCondition`, // 文章列表分页条件查询
getArticle: `${host1}occupationlab/occupationlab/information/article/getArticle`, // 根据id查询文章
// 线上赛事
notLoggedInBeforeStudentEvents: `occupationlab/occupationlab/enterprise/match/contest/notLoggedInBeforeStudentEvents`,
contestPageConditionQueryByOccupationlabStu: `occupationlab/occupationlab/enterprise/match/contest/contestPageConditionQueryByOccupationlabStu`,
contestPageConditionQueryByOccupationlab: `occupationlab/occupationlab/enterprise/match/contest/onlineCompetitionByStudent`,
listOfRegisteredEvents: `occupationlab/occupationlab/enterprise/match/contest/listOfRegisteredEvents`,
addApplicant: `occupationlab/occupationlab/enterprise/match/applicant/addApplicant`, // 添加报名人员
getContestProgress: `occupationlab/occupationlab/enterprise/match/contest-progress/getContestProgress`, // 根据赛事id查询竞赛进展
getContest: `occupationlab/occupationlab/enterprise/match/contest/getContest`, // 根据id查询赛事
notLoggedInBeforeStudentEvents: `occupationlab/occupationlab/match/contest/notLoggedInBeforeStudentEvents`,
contestPageConditionQueryByOccupationlabStu: `occupationlab/occupationlab/match/contest/contestPageConditionQueryByOccupationlabStu`,
contestPageConditionQueryByOccupationlab: `occupationlab/occupationlab/match/contest/onlineCompetitionByStudent`,
listOfRegisteredEvents: `occupationlab/occupationlab/match/contest/listOfRegisteredEvents`,
addApplicant: `occupationlab/occupationlab/match/applicant/addApplicant`, // 添加报名人员
getContestProgress: `occupationlab/occupationlab/match/contest-progress/getContestProgress`, // 根据赛事id查询竞赛进展
getContest: `occupationlab/occupationlab/match/contest/getContest`, // 根据id查询赛事
queryAnnouncementByContestId: `occupationlab/occupationlab/contest/announcement/queryAnnouncementByContestId`,
queryAnnouncementDetails: `occupationlab/occupationlab/contest/announcement/queryAnnouncementDetails`,
contestAfterLogin: `occupationlab/occupationlab/enterprise/match/contest/contestAfterLogin`,
cancelRegistration: `occupationlab/occupationlab/enterprise/match/applicant/cancelRegistration`,
cancelRegistration: `occupationlab/occupationlab/match/applicant/cancelRegistration`,
// 阿里云文件/视频管理
fileDeletion: `${uploadURL}oss/manage/fileDeletion`, // 删除OSS文件

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 164 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 86 KiB

After

Width:  |  Height:  |  Size: 160 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 150 KiB

After

Width:  |  Height:  |  Size: 68 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 126 KiB

After

Width:  |  Height:  |  Size: 80 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.5 KiB

After

Width:  |  Height:  |  Size: 3.1 KiB

@ -0,0 +1,35 @@
<template>
<div>
<template v-for="item in this.menuList">
<el-submenu :key="item.id" :index="item.id" v-if="item.children && item.children.length">
<template slot="title">
<span slot="title">{{item.name}}</span>
</template>
<menuTree :menuList="item.children"></menuTree>
</el-submenu>
<el-menu-item :key="item.id" :index="item.id" v-else>
<span slot="title">{{item.name}}</span>
</el-menu-item>
</template>
</div>
</template>
<script>
export default {
name: 'menuTree',
props: {
menuList: {
type: Array,
default: []
}
},
data () {
return {}
},
mounted () {},
methods: {}
}
</script>
<style lang="scss" scoped>
</style>

@ -32,7 +32,7 @@
<img src="@/assets/img/user.png" alt="">
<span>登录</span>
</div>
<el-button class="trial" type="primary" @click="toTrial">免费试用</el-button>
<el-button v-if="isZxy" class="trial" type="primary" @click="toTrial">免费试用</el-button>
</div>
</div>
</div>

@ -3,7 +3,7 @@
<ul class="nav">
<li v-for="(item, i) in menus" :key="i" :class="{active: active == item.index}" @click="jump(item)">
{{item.title}}
<ul :class="['children']" v-if="item.index === '/info/list'">
<ul :class="['children']" v-if="item.index === '/preInfo/list' || item.index === '/info/list'">
<li v-for="(column, i) in columns" :key="i" :class="{active: columnActive === column.id}" @click="toInfo($event, column)">{{ column.name }}</li>
</ul>
</li>
@ -18,6 +18,7 @@ export default {
data() {
return {
token: util.local.get(Setting.tokenKey),
isTourist: false,
active: this.$route.path,
//
loginedMenu: [
@ -72,20 +73,34 @@ export default {
index: "/log/list",
title: "更新日志"
},
{
index: "/preCourse/list",
title: "精品课程"
},
{
index: "/preInfo/list",
title: "最新资讯"
},
// {
// index: "trial",
// title: ""
// }
],
menus: [],
columns: [], //
columns: [
{
id: 0,
name: '平台资讯'
}
], //
columnActive: this.$route.query.parentId
};
},
mounted() {
const path = this.$route.path
this.isTourist = !!Setting.whiteList.find(e => e === path)
//
if (Setting.whiteList.find(e => e === path)) {
if (this.isTourist) {
//
const menus = this.touristMenu
if (Setting.isZxy) {
@ -99,7 +114,7 @@ export default {
} else {
this.menus = this.loginedMenu
}
this.token && this.getColumns()
this.isTourist || this.getColumns()
},
methods: {
//
@ -126,23 +141,25 @@ export default {
} else {
this.active = index
this.columnActive = ''
index === '/info/list' || this.$router.push(index).catch(err => {})
index === '/preInfo/list' || index === '/info/list' || this.$router.push(index).catch(err => {})
token !== this.token && location.reload() // tokentoken
}
}
},
//
async getColumns() {
const res = await this.$get(this.api.firstLevelColumn)
this.columns = res.data
getColumns() {
this.$get(this.api.queryAllColumns).then(({ columnTree }) => {
this.columns.push(...columnTree)
}).catch(res => {})
},
//
toInfo(e, column) {
e.stopPropagation()
const { id } = column
this.active = '/info/list'
const path = this.isTourist ? 'preInfo' : 'info'
this.active = `/${path}/list`
this.columnActive = id
this.$router.push(`/info?parentId=${id}&name=${column.name}`)
this.$router.push(`/${path}/list?parentId=${id || ''}&name=${column.name}`)
}
}
};

@ -84,6 +84,7 @@ import breadcrumb from '@/components/breadcrumb'
export default {
data() {
return {
startTime: Date.now(), //
id: this.$route.query.id,
video: 'http://liuwanr.oss-cn-shenzhen.aliyuncs.com/mp4/20200519/1589871025648.mp4',
chapterList: [],
@ -124,13 +125,21 @@ export default {
this.getData()
this.getChapter()
},
destroyed() {
this.$post(this.api.playRecordSave, {
courseId: this.id,
courseType: 1,
playTime: Math.ceil((Date.now() - this.startTime) / 1000 / 60)
}).then(({ data }) => {}).catch(res => {})
},
methods: {
async getData(){
let res = await this.$get(`${this.api.getCourseById}/${this.id}`)
this.courseName = res.course.name
this.description = res.course.description
this.coverUrl = res.course.coverUrl || 'https://huoran.oss-cn-shenzhen.aliyuncs.com/20220224/png/1496735335294984192.png'
getData(){
this.$post(`${this.api.findByIdCourse}?id=${this.id}`).then(({ data }) => {
this.courseName = data.courseName
this.description = data.courseIntroduction
this.coverUrl = data.coverUrl || 'https://huoran.oss-cn-shenzhen.aliyuncs.com/20220224/png/1496735335294984192.png'
this.$refs.breadcrumb.update('课程学习/' + this.courseName)
}).catch(res => {})
},
async getChapter(){
let res = await this.$get(`${this.api.queryChaptersAndSubsections}/${this.id}`)

@ -7,28 +7,36 @@
<input type="text" placeholder="请输入课程名称" v-model="keyword">
</div>
</div>
<div class="tabs">
<a class="item" v-for="(item, i) in tabs" :key="i" :class="{active: item.id == active}" @click="tabChange(item)">{{ item.name }}</a>
</div>
<!-- 课程筛选 -->
<div class="filter">
<div class="wrap-inner" style="padding-bottom: 0">
<dl>
<dt>课程分类</dt>
<dd v-for="(item, index) in classificationList" :key="index" :class="{active: classificationId == item.id}" @click="changeType(item.id)">{{ item.name }}</dd>
<dd :class="{active: form.categoryId === ''}" @click="changeCategory('')">不限</dd>
<dd v-for="(item, i) in classificationList" :key="i" :class="{active: form.categoryId === item.id}" @click="changeCategory(item.id)">{{ item.classificationName }}</dd>
</dl>
<dl>
<dt>课程类型</dt>
<dd v-for="(item, i) in types" :key="i" :class="{active: form.courseType === item.id}" @click="changeType(item.id)">{{ item.name }}</dd>
</dl>
</div>
</div>
<!-- 课程列表 -->
<div class="courses">
<div class="wrap-inner">
<template v-if="courseData.length">
<template v-if="list.length">
<ul>
<li v-for="(item, index) in courseData" :key="index" @click="toDetail(item.id)">
<li v-for="(item, index) in list" :key="index" @click="toDetail(item.id)">
<img :src="item.coverUrl" alt="" />
<div class="title">{{ item.name }}</div>
<div class="desc" :class="{ie: core.isIE(),ie: core.isFirefox()}" v-html="item.description"></div>
<div class="title">{{ item.courseName }}</div>
<div class="desc" :class="{ie: core.isIE(),ie: core.isFirefox()}" v-html="item.courseIntroduction"></div>
</li>
</ul>
<div class="pagination">
<el-pagination background layout="total, prev, pager, next" :total="totals" @current-change="handleCurrentChange" :current-page="pageNo">
<el-pagination background layout="total, prev, pager, next" :total="total" @current-change="handleCurrentChange" :current-page="page">
</el-pagination>
</div>
</template>
@ -48,31 +56,52 @@
<script>
import { Loading } from "element-ui";
import bus from "@/libs/bus";
import Setting from "@/setting";
export default {
name: "course",
data() {
return {
userId: this.$store.state.userId,
schoolId: this.$store.state.schoolId,
classificationId: "",
classificationList: [
{
id: '',
name: '不限'
}
active: 0,
tabs: [
{
id: 0,
name: '共享课程'
},
{
id: 1,
name: '本校课程'
}
],
form: {
categoryId: '',
courseType: ''
},
classificationList: [],
types: [
{
id: '',
name: '不限'
},
{
id: 0,
name: '免费'
},
{
id: 1,
name: '付费'
}
],
courseData: [],
keyword: "",
totals: 0,
pageNo: 1,
pageSize: 8,
list: [],
keyword: '',
total: 0,
page: 1,
pageSize: 10,
searchTimer: null,
loadIns: null
};
},
mounted() {
bus.$emit("setBg", "course");
this.getClassification();
this.getClassification(0);
this.getData();
},
watch: {
@ -85,39 +114,60 @@ export default {
},
methods: {
getData() {
this.loadIns = Loading.service();
let data = {
classificationId: this.classificationId,
name: this.keyword,
port: 0,
schoolId: this.schoolId
};
this.$get(`${this.api.queryCourseByCondition}/${this.pageNo}/${this.pageSize}`, data).then(res => {
this.courseData = res.courseList;
this.totals = res.total;
this.courseData.map(n => {
n.description = n.description.replace(/<img.*?(?:>|\/>)/gi, "");
});
this.loadIns.close();
this.loadIns = Loading.service()
this.$post(this.api.pageConditionalQueryCourseByStudent, {
...this.form,
pageNum: this.page,
pageSize: this.pageSize,
courseSource: this.active,
keyWord: this.keyword
}).then(({ page }) => {
this.list = page.records
this.total = page.total
this.list.map(n => {
n.courseIntroduction = n.courseIntroduction.replace(/<img.*?(?:>|\/>)/gi, "")
})
this.loadIns.close()
}).catch(res => {
this.loadIns.close();
this.loadIns.close()
});
},
initData() {
this.pageNo = 1;
this.page = 1;
this.getData();
},
getClassification() {
this.$get(this.api.queryGlClassification).then(res => {
this.classificationList = [...this.classificationList, ...res.classificationList]
}).catch(res => {})
//
getClassification(platformSource) {
this.$post(this.api.listClassification, {
pageNum: 1,
pageSize: 1000,
platformSource
}).then(({ page }) => {
this.classificationList = page.records
}).catch(res => {})
},
changeType(type) {
this.classificationId = type;
this.initData();
// tab
tabChange(item) {
this.form = {
categoryId: '',
courseType: ''
}
this.active = item.id
this.getClassification(item.id)
this.initData()
},
//
changeCategory(id) {
this.form.categoryId = id
this.initData()
},
//
changeType(id) {
this.form.courseType = id
this.initData()
},
handleCurrentChange(val) {
this.pageNo = val;
this.page = val;
this.getData();
},
toDetail(id) {
@ -162,25 +212,49 @@ export default {
border-radius: 4px;
}
}
.tabs {
display: flex;
justify-content: center;
align-items: center;
.item {
padding: 0 10px;
margin-right: 16px;
font-size: 17px;
text-align: center;
color: #333;
line-height: 50px;
border-bottom: 3px solid transparent;
cursor: pointer;
&.active {
color: #007EFF;
border-color: #007EFF;
}
}
}
.wrap {
.filter {
width: 100%;
background-color: #fff;
dl {
display: flex;
line-height: 70px;
align-items: center;
margin: 20px 0;
dt {
color: #333;
font-size: 16px;
font-weight: 600;
white-space: nowrap;
}
dd {
margin: 0 10px;
color: #333;
padding: 5px 15px;
color: #6a6a6a;
font-size: 16px;
white-space: nowrap;
cursor: pointer;
border-radius: 4px;
&.active {
color: $main-color;
background-color: #e6f0ff;
}
}
}

@ -2,41 +2,41 @@
<div class="wrap index">
<img class="screen" src="@/assets/img/index/index0.png" alt="首页">
<div class="banner">
<el-carousel height="600px" :autoplay="false">
<el-carousel height="420px" :autoplay="false">
<el-carousel-item>
<div class="slide">
<div class="slide slide1">
<div class="texts">
<img class="name" src="@/assets/img/zxy/name.png" alt="">
<p class="des">致力于帮助高校大商科类专业实现课程信息化数字化和共建共享</p>
<div class="btns">
<el-button size="small" @click="toTrial">预约演示</el-button>
<el-button type="primary" size="small" @click="toTrial">免费试用</el-button>
<a class="btn1" @click="toTrial">预约演示</a>
<a class="btn2" @click="toTrial">免费试用</a>
</div>
</div>
<img class="bg" src="@/assets/img/zxy/banner1.png" alt="">
</div>
</el-carousel-item>
<el-carousel-item>
<div class="slide">
<div class="slide slide2">
<div class="texts">
<img class="name" src="@/assets/img/zxy/name.png" alt="">
<p class="des">集实践教学课程学习项目练习考核管理线上赛事为一体的教学辅助云平台 </p>
<div class="btns">
<el-button size="small" @click="toTrial">预约演示</el-button>
<el-button type="primary" size="small" @click="toTrial">免费试用</el-button>
<a class="btn1" @click="toTrial">预约演示</a>
<a class="btn2" @click="toTrial">免费试用</a>
</div>
</div>
<img class="bg" src="@/assets/img/zxy/banner2.png" alt="">
</div>
</el-carousel-item>
<el-carousel-item>
<div class="slide">
<div class="slide slide3">
<div class="texts">
<img class="name" src="@/assets/img/zxy/name.png" alt="">
<p class="des">覆盖金融科技大数据管理与应用数字经济金融工程电子商务财务管理等大商科相关专业助力高校复合型人才培养 </p>
<div class="btns">
<el-button size="small" @click="toTrial">预约演示</el-button>
<el-button type="primary" size="small" @click="toTrial">免费试用</el-button>
<a class="btn1" @click="toTrial">预约演示</a>
<a class="btn2" @click="toTrial">免费试用</a>
</div>
</div>
<img class="bg" src="@/assets/img/zxy/banner3.png" alt="">
@ -286,20 +286,28 @@ export default {
position: absolute;
top: -1000px;
}
/deep/.el-carousel__container {
background: url(../../../assets/img/zxy/banner-bg.png) bottom left/auto no-repeat;
}
.banner {
background: linear-gradient(156deg, #D0E1FE 0%, #FFFFFF 100%);
background: linear-gradient(143deg, #376FF7 0%, #479DF8 100%);
.slide {
display: flex;
justify-content: center;
align-items: center;
height: 100%;
}
.slide1 {
background: url(../../../assets/img/zxy/banner-bg1-1.png) no-repeat,
url(../../../assets/img/zxy/banner-bg1-2.png) bottom right/auto no-repeat;
}
.slide2 {
background: url(../../../assets/img/zxy/banner-bg2-1.png) no-repeat,
url(../../../assets/img/zxy/banner-bg2-2.png) bottom right/auto no-repeat;
}
.slide3 {
background: url(../../../assets/img/zxy/banner-bg3-1.png) no-repeat;
}
.texts {
max-width: 540px;
margin-right: 40px;
margin-right: 230px;
}
.name {
margin-bottom: 30px;
@ -308,14 +316,30 @@ export default {
margin-bottom: 35px;
font-size: 18px;
line-height: 25px;
color: #1C3355;
color: #fff;
}
.btns {
display: flex;
a {
width: 96px;
text-align: center;
font-size: 14px;
line-height: 36px;
border-radius: 6px;
cursor: pointer;
&:hover {
opacity: .9;
}
}
}
.el-button {
border: 0;
border-radius: 6px;
.btn1 {
color: #fff;
border: 1px solid;
}
.el-button + .el-button {
.btn2 {
margin-left: 16px;
color: #3B79F7;
background-color: #fff;
}
}
.i-title{

@ -28,7 +28,6 @@ export default {
data() {
return {
firstName: this.$route.query.first,
secondName: this.$route.query.second,
breadcrumbQuery: {
parentId: this.$route.query.parentId,
name: this.$route.query.first
@ -62,7 +61,7 @@ export default {
this.content = data.content
this.viewCount = data.viewCount
this.$forceUpdate()
this.$refs.breadcrumb.update(this.firstName + '/' + this.title)
this.$refs.breadcrumb.update('最新资讯/' + this.title)
this.loadIns.close()
})
.catch(err => {

@ -9,12 +9,7 @@
unique-opened
:default-active="defaultIndex"
@select="initData">
<template v-for="item in menuList">
<el-menu-item :index="item.id" :key="item.id">
<i :class="item.icon"></i>
<span slot="title">{{ item.name }}</span>
</el-menu-item>
</template>
<menuTree v-if="menuRefresh" :menuList="menuList"></menuTree>
</el-menu>
</div>
<div class="list-wrap">
@ -36,7 +31,7 @@
</li>
</ul>
<div class="pagination">
<el-pagination background layout="total, prev, pager, next" :total="totals" @current-change="handleCurrentChange" :current-page="pageNo">
<el-pagination background layout="total, prev, pager, next" :total="totals" @current-change="handleCurrentChange" :current-page="page">
</el-pagination>
</div>
</template>
@ -57,7 +52,7 @@
<script>
import { Loading } from 'element-ui';
import bus from '@/libs/bus'
import menuTree from '@/components/menuTree'
import { mapActions } from "vuex";
export default {
name: 'information',
@ -67,14 +62,18 @@ export default {
historyId: this.$store.state.info.columnId,
defaultIndex: '',
menuList: [],
pageNo: 1,
page: 1,
pageSize: 10,
totals: 0,
listData: [],
loadIns: null,
columnId: ''
columnId: '',
menuRefresh: false
};
},
components: {
menuTree
},
watch: {
keyword: function(val) {
clearTimeout(this.searchTimer)
@ -87,48 +86,61 @@ export default {
}
},
mounted() {
bus.$emit('setBg','info')
this.getData()
},
methods: {
...mapActions("info", [
"setColumnId"
]),
getData() {
const parentId = this.$route.query.parentId
this.setColumnId('')
this.loadIns = Loading.service()
this.$get(this.api.secondaryColumnsByFirst, {
parentId
}).then(res => {
const { data } = res
this.menuList = data
// ,
const historyId = this.historyId
if(historyId && data.find(e => e.id === historyId)){
this.defaultIndex = historyId
this.getContent(historyId)
}else{
//
const id = data.length ? data[0].id : parentId
this.getContent(id)
this.defaultIndex = id
}
}).catch(res => {
this.loadIns.close()
});
async getData() {
const { parentId } = this.$route.query
this.setColumnId('')
this.loadIns = Loading.service()
let res = null
let data = null
// parentId
if (parentId) {
//
res = await this.$get(this.api.queryAllColumns)
data = res.columnTree
data = res.columnTree.find(e => e.id == parentId).children
} else {
//
res = await this.$get(this.api.queryAllColumns, {
school: 0
})
data = res.columnTree
}
this.menuRefresh = false
this.menuList = data
// ,
const historyId = this.historyId
if (historyId && data.find(e => e.id === historyId)) {
this.defaultIndex = historyId + ''
this.getContent(historyId)
} else {
//
const id = data.length ? data[0].id : parentId
this.getContent(id)
this.defaultIndex = id + ''
}
this.$nextTick(() => {
this.menuRefresh = true
})
},
initData(index,indexPath){
this.pageNo = 1
this.page = 1
this.getContent(index,indexPath)
},
getContent(index,indexPath){
if(indexPath) this.loadIns = Loading.service()
this.columnId = index
this.$get(`${this.api.queryArticleByCondition}/${this.pageNo}/${this.pageSize}`, {
this.$get(`${this.api.queryArticleByCondition}/${this.page}/${this.pageSize}`, {
name: this.keyword,
columnId: index,
port: 0
port: 0,
school: this.$route.query.parentId ? '' : 0
}).then(res => {
this.listData = res.articleList
this.totals = res.total
@ -141,14 +153,13 @@ export default {
});
},
handleCurrentChange(val) {
this.pageNo = val;
this.page = val;
this.getContent(this.columnId);
},
toArticle(id){
const columnId = this.columnId
const list = this.menuList
this.setColumnId(columnId)
this.$router.push(`/info/details?parentId=${this.$route.query.parentId}&id=${id}&first=${this.$route.query.name}&second=${list.length ? list.find(e => e.id === columnId).name : ''}`)
this.$router.push(`/${this.$route.path === '/info/list' ? 'info' : 'preInfo'}/details?parentId=${this.$route.query.parentId}&id=${id}`)
}
}
};
@ -178,16 +189,18 @@ export default {
.nav{
width: 156px;
overflow: hidden;
/deep/ .el-menu {
text-align: right;
.el-menu {
border-right: 0;
.el-submenu__icon-arrow {
display: none;
}
.el-submenu__title {
padding-right: 60px;
padding-right: 40px;
color: #1182f5;
background-color: #c6e7ff;
.el-submenu__title {
padding-right: 60px;
}
}
.el-menu-item {
min-width: auto;

@ -2,41 +2,41 @@
<div class="wrap index">
<img class="screen" src="@/assets/img/index/index0.png" alt="首页">
<div class="banner">
<el-carousel height="600px" :autoplay="false">
<el-carousel height="420px" :autoplay="false">
<el-carousel-item>
<div class="slide">
<div class="slide slide1">
<div class="texts">
<img class="name" src="@/assets/img/zxy/name.png" alt="">
<p class="des">致力于帮助高校大商科类专业实现课程信息化数字化和共建共享</p>
<div class="btns">
<el-button size="small" @click="toTrial">预约演示</el-button>
<el-button type="primary" size="small" @click="toTrial">免费试用</el-button>
<a class="btn1" @click="toTrial">预约演示</a>
<a class="btn2" @click="toTrial">免费试用</a>
</div>
</div>
<img class="bg" src="@/assets/img/zxy/banner1.png" alt="">
</div>
</el-carousel-item>
<el-carousel-item>
<div class="slide">
<div class="slide slide2">
<div class="texts">
<img class="name" src="@/assets/img/zxy/name.png" alt="">
<p class="des">集实践教学课程学习项目练习考核管理线上赛事为一体的教学辅助云平台 </p>
<div class="btns">
<el-button size="small" @click="toTrial">预约演示</el-button>
<el-button type="primary" size="small" @click="toTrial">免费试用</el-button>
<a class="btn1" @click="toTrial">预约演示</a>
<a class="btn2" @click="toTrial">免费试用</a>
</div>
</div>
<img class="bg" src="@/assets/img/zxy/banner2.png" alt="">
</div>
</el-carousel-item>
<el-carousel-item>
<div class="slide">
<div class="slide slide3">
<div class="texts">
<img class="name" src="@/assets/img/zxy/name.png" alt="">
<p class="des">覆盖金融科技大数据管理与应用数字经济金融工程电子商务财务管理等大商科相关专业助力高校复合型人才培养 </p>
<div class="btns">
<el-button size="small" @click="toTrial">预约演示</el-button>
<el-button type="primary" size="small" @click="toTrial">免费试用</el-button>
<a class="btn1" @click="toTrial">预约演示</a>
<a class="btn2" @click="toTrial">免费试用</a>
</div>
</div>
<img class="bg" src="@/assets/img/zxy/banner3.png" alt="">
@ -157,7 +157,7 @@
<li class="wow fadeInDown" data-wow-delay="1.1s">
<img src="@/assets/img/zxy/card4.png" alt="">
<h6>金融科技文化展区</h6>
<p class="des">根据专业发展的方向可建设金融科技创新综合实验室银行科技实验室金融大数据实验室智慧金融实验室大数据风控实验室等</p>
<p class="des">围绕科技+金融为主题采用数字化手段以参与体验互动性的展品等进行文化展示</p>
</li>
</ul>
</div>
@ -451,20 +451,28 @@ export default {
position: absolute;
top: -1000px;
}
/deep/.el-carousel__container {
background: url(../../../assets/img/zxy/banner-bg.png) bottom left/auto no-repeat;
}
.banner {
background: linear-gradient(156deg, #D0E1FE 0%, #FFFFFF 100%);
background: linear-gradient(143deg, #376FF7 0%, #479DF8 100%);
.slide {
display: flex;
justify-content: center;
align-items: center;
height: 100%;
}
.slide1 {
background: url(../../../assets/img/zxy/banner-bg1-1.png) no-repeat,
url(../../../assets/img/zxy/banner-bg1-2.png) bottom right/auto no-repeat;
}
.slide2 {
background: url(../../../assets/img/zxy/banner-bg2-1.png) no-repeat,
url(../../../assets/img/zxy/banner-bg2-2.png) bottom right/auto no-repeat;
}
.slide3 {
background: url(../../../assets/img/zxy/banner-bg3-1.png) no-repeat;
}
.texts {
max-width: 540px;
margin-right: 40px;
margin-right: 230px;
}
.name {
margin-bottom: 30px;
@ -472,16 +480,31 @@ export default {
.des {
margin-bottom: 35px;
font-size: 18px;
font-family: PingFangSC-Regular, PingFang SC;
line-height: 25px;
color: #1C3355;
color: #fff;
}
.el-button {
border: 0;
border-radius: 6px;
.btns {
display: flex;
a {
width: 96px;
text-align: center;
font-size: 14px;
line-height: 36px;
border-radius: 6px;
cursor: pointer;
&:hover {
opacity: .9;
}
}
}
.el-button + .el-button {
.btn1 {
color: #fff;
border: 1px solid;
}
.btn2 {
margin-left: 16px;
color: #3B79F7;
background-color: #fff;
}
}
.i-title{

@ -492,7 +492,7 @@ export default {
bottom: '3%',
containLabel: true
},
color:['#f7ee46', '#56bb29', '#5492ff', '#e51579'],
color:['#56f3f7', '#b76fff', '#5492ff', '#e51579'],
xAxis: [
{
type: 'category',

@ -114,6 +114,7 @@ export default {
components: { pdf, breadcrumb },
data() {
return {
startTime: Date.now(), //
systemIds: '',
courseId: this.$route.query.courseId,
curriculumName: this.$route.query.curriculumName,
@ -156,11 +157,17 @@ export default {
])
},
mounted() {
bus.$emit("setBg", "none");
this.insertScript();
this.getData();
this.getChapter();
},
destroyed() {
this.$post(this.api.playRecordSave, {
courseId: this.courseId,
courseType: 0,
playTime: Math.ceil((Date.now() - this.startTime) / 1000 / 60)
}).then(({ data }) => {}).catch(res => {})
},
methods: {
goBack() {
this.$router.back();

@ -13,17 +13,27 @@ export default {
meta,
component: BasicLayout,
children: [
{
name: `${pre}list`,
path: `list`,
component: () => import("@/pages/course/list"),
meta: { title: "课程管理" }
},
{
name: `${pre}details`,
path: `details`,
component: () => import("@/pages/course/details"),
meta: { title: "课程学习" }
}
{
path: `/preCourse/list`,
component: () => import("@/pages/course/list"),
meta: { title: "课程管理" }
},
{
path: `/preCourse/details`,
component: () => import("@/pages/course/details"),
meta: { title: "课程学习" }
},
{
name: `${pre}list`,
path: `list`,
component: () => import("@/pages/course/list"),
meta: { title: "课程管理" }
},
{
name: `${pre}details`,
path: `details`,
component: () => import("@/pages/course/details"),
meta: { title: "课程学习" }
}
]
};

@ -13,17 +13,27 @@ export default {
meta,
component: BasicLayout,
children: [
{
name: `${pre}list`,
path: `list`,
component: () => import("@/pages/info/list"),
meta: { title: "资讯" }
},
{
name: `${pre}details`,
path: `details`,
component: () => import("@/pages/info/details"),
meta: { title: "资讯详情" }
}
{
path: `/preInfo/list`,
component: () => import("@/pages/info/list"),
meta: { title: "资讯" }
},
{
path: `/preInfo/details`,
component: () => import("@/pages/info/details"),
meta: { title: "资讯详情" }
},
{
name: `${pre}list`,
path: `list`,
component: () => import("@/pages/info/list"),
meta: { title: "资讯" }
},
{
name: `${pre}details`,
path: `details`,
component: () => import("@/pages/info/details"),
meta: { title: "资讯详情" }
}
]
};

@ -28,7 +28,7 @@ if (isPro) {
host = "http://121.37.12.51/"; // 测试服
// host = 'https://www.occupationlab.com/' // 正式服
host = "http://192.168.31.151:9000/"; // 榕
// host = "http://192.168.31.137:9000/"; // 赓
host = "http://192.168.31.137:9000/"; // 赓
}
const Setting = {
@ -36,6 +36,7 @@ const Setting = {
* 基础配置
* */
platformId: 1, // 平台标识,1职站,2数据平台,3中台
platformSource: 0, // 平台来源(0中台,1职站)
titleSuffix: title, // 网页标题的后缀
routerMode: "hash", // 路由模式,可选值为 history 或 hash
showProgressBar: true, // 页面切换时,是否显示模拟的进度条
@ -57,7 +58,7 @@ const Setting = {
/**
* 路由白名单
* */
whiteList: ['/login', '/index/list', '/index/zxy', '/product', '/cityPartner/list', '/devPlatform/list', '/log/list', '/touristMatch/list', '/touristMatch/details', '/touristMatch/noticeDetail'],
whiteList: ['/login', '/index/list', '/index/zxy', '/product', '/cityPartner/list', '/devPlatform/list', '/log/list', '/touristMatch/list', '/touristMatch/details', '/touristMatch/noticeDetail', '/preCourse/list', '/preCourse/details', '/preInfo/list', '/preInfo/details'],
/**
* 平台列表
* */

@ -196,6 +196,7 @@
font-size: 32px;
font-weight: bold;
color: #00d8ff;
white-space: nowrap;
}
.num1 {
top: 220px;
@ -208,6 +209,7 @@
.num3 {
top: 280px;
left: 185px;
font-size: 20px;
}
.num4 {
top: 205px;

Loading…
Cancel
Save