yujialong 2 years ago
parent ab8b8aaaa1
commit e21042108a
  1. 9
      src/api/index.js
  2. BIN
      src/assets/img/zxy/intro-bg4.png
  3. 24
      src/pages/activity/list/index.vue
  4. 9
      src/pages/activity/manage/list/index.vue
  5. 27
      src/pages/screen/index.vue
  6. 258
      src/pages/station/preview/index.vue
  7. 2
      src/styles/page/screen.scss
  8. 9
      src/styles/page/station.scss

@ -35,10 +35,10 @@ export default {
updateLearningProgress: 'nakadai/nakadai/curriculum/learning/progressprogress/update',
// 课程笔记
addNote: `${host1}nakadai/curriculumNotes/addNote`,
curriculumNoteList: `${host1}nakadai/curriculumNotes/curriculumNoteList`,
deleteNotes: `${host1}nakadai/curriculumNotes/deleteNotes`,
updateNote: `${host1}nakadai/curriculumNotes/updateNote`,
addNote: `nakadai/curriculumNotes/addNote`,
curriculumNoteList: `nakadai/curriculumNotes/curriculumNoteList`,
deleteNotes: `nakadai/curriculumNotes/deleteNotes`,
updateNote: `nakadai/curriculumNotes/updateNote`,
// 能力测评
canExperiment: `occupationlab/occupationlab/evaluationrecord/can_experiment`, // 查询是否能够开启实验
@ -54,6 +54,7 @@ export default {
// 实验记录
schoolCourse: `nakadai/nakadai/curriculum/schoolCourse`, // 获取学校购买订单后的课程
curriculumListForBeforeLogin: `nakadai/nakadai/curriculum/curriculumListForBeforeLogin`,
experimentOverview: `occupationlab/occupationlab/achievement/experimentOverview`, //实验概览
queryAssessmentByStudent: `occupationlab/occupationlab/achievement/queryAssessmentByStudent`, //学生端考核成绩
queryPracticeByStudent: `occupationlab/occupationlab/achievement/queryPracticeByStudent`, //学生端练习成绩

Binary file not shown.

Before

Width:  |  Height:  |  Size: 58 KiB

After

Width:  |  Height:  |  Size: 75 KiB

@ -11,7 +11,7 @@
<div class="main">
<div class="center-wrap list-inner">
<ul v-if="token" class="nav">
<li :class="{ active: form.eventType === item.id }" v-for="(item, index) in typeList" :key="index" @click="changeType(item.id)">{{ item.name }}
<li :class="{ active: form.whetherToSignUp === item.id }" v-for="(item, index) in typeList" :key="index" @click="changeType(item.id)">{{ item.name }}
</li>
</ul>
<div class="list-wrap">
@ -20,7 +20,7 @@
<div>
<dl>
<dt>筛选排序</dt>
<dd v-for="(item, i) in sorts" :key="i" :class="{active: form.sequence == item.id}" @click="changeSort(item.id)">{{ item.name }}</dd>
<dd v-for="(item, i) in sorts" :key="i" :class="{active: form.filterSort == item.id}" @click="changeSort(item.id)">{{ item.name }}</dd>
</dl>
</div>
<el-button type="primary" @click="$router.push('manage')">我的项目</el-button>
@ -109,12 +109,12 @@ export default {
}
],
form: {
sequence: 2, // (1: 2.)
eventType: ''
filterSort: 0,
whetherToSignUp: ''
},
sorts: [
{
id: 2,
id: 0,
name: '最近更新'
},
{
@ -133,11 +133,6 @@ export default {
timerList: [],
};
},
computed: {
...mapState('match', [
'eventType'
])
},
watch: {
keyword: function(val) {
clearTimeout(this.searchTimer);
@ -243,7 +238,7 @@ export default {
},
// redis
getRedis() {
this.$post(this.api.getRedisCacheCompetition).then(({ data }) => {
this.$post(this.api.getRedisCacheActivity).then(({ data }) => {
data && this.getList()
}).catch(res => {})
},
@ -252,17 +247,16 @@ export default {
form.competitionScope = 3
form.provinceId = ''
form.cityId = ''
form.sequence = 2
form.eventType = type
form.filterSort = 2
form.whetherToSignUp = type
this.initData()
},
//
changeSort(type) {
this.form.sequence = type
this.form.filterSort = type
this.initData()
},
toDetail(item) {
this.SET_TYPE(this.form.eventType)
this.$router.push(`/activity/details?id=${item.id}`);
},
handleCurrentChange(val) {

@ -68,16 +68,14 @@
<template slot-scope="scope">
<el-button v-auth type="text" @click="manage(scope.row)">管理</el-button>
<el-button v-auth type="text" @click="delData(scope.row)">删除</el-button>
<!-- 列表展示中台的禁启用依据zt_open展示职站的禁启用依据is_open展示 -->
<!-- 中台禁用了这个学校发布的学校这边还能看到但是学校这边不能启用 -->
<el-switch
v-if="scope.row.publishStatus"
v-auth="'禁用'"
v-model="scope.row.schoolOpen"
v-model="scope.row.isOpen"
:active-value="0"
:inactive-value="1"
style="margin: 0 10px 0 5px"
:active-text="scope.row.schoolOpen ? '关' : '开'"
:active-text="scope.row.isOpen ? '关' : '开'"
@change="switchOff($event,scope.row,scope.$index)"
></el-switch>
</template>
@ -237,6 +235,9 @@ export default {
}
})
}, 1000)
list.map(e => {
if (e.schoolOpen) e.isOpen = 1
})
this.activityData = list
this.total = data.total
this.$refs.table.clearSelection()

@ -327,7 +327,7 @@
</thead>
</table>
</div>
<div class="main_table" ref="active" style="max-height: 220px;margin-top: 0;overflow: hidden">
<div class="main_table" ref="active" style="max-height: 230px;margin-top: 0;overflow: hidden">
<table>
<tbody>
<tr v-for="(item, i) in actives" :key="i">
@ -504,7 +504,7 @@ export default {
}).catch(res => {})
},
//
renderChart() {
async renderChart() {
const animateChart = (chart, option, data, num = 6) => {
//
if (option.dataZoom[0].endValue == data.length ) {
@ -701,9 +701,24 @@ export default {
color2: 'rgba(156, 163, 2, 0.4)'
}
]
this.$get(this.api.schoolCourse).then(({ data }) => {
const courseList = data
const ids = data.map(e => e.cid)
//
const cousrseRes = this.token ?
await this.$get(this.api.schoolCourse) :
await this.$post(this.api.curriculumListForBeforeLogin, {
pageNum: 1,
pageSize: 100,
supplierId: '1,2,3,4',
curriculumName: '',
categoryId: '',
curriculumType: '',
professionalCategoryId: '',
professionalId: '',
})
if (cousrseRes) {
const courseList = this.token ?
cousrseRes.data :
cousrseRes.page.records
const ids = courseList.map(e => e.cid)
times.map(e => {
e.cid = ids
})
@ -852,7 +867,7 @@ export default {
// animateChart(chart[1], option, times)
// }, 5000)
}).catch(res => {})
}).catch(err => {})
}
// 线
const date = new Date()

@ -80,9 +80,9 @@
</template>
</template>
<div v-else class="section">
<p class="sectionName" v-for="(item, i) in progressList" :key="i">
<p class="sectionName" v-for="(item, i) in progressList" :key="i" :title="item.projectName">
{{ i + 1 }}.
{{ item.name }}
{{ item.projectName }}
<i :class="['icon', item.whetherToStudyOrNot ? 'el-icon-success' : 'circle']" @click.stop="studySection(item)"></i>
</p>
</div>
@ -94,121 +94,123 @@
<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>
<template v-if="active === 1">
<div class="page">
<h6 class="l-title">
<img src="@/assets/img/course1.png" alt="">
课程简介
</h6>
<p class="intro">{{ briefIntroduction }}</p>
</div>
<div class="page">
<h6 class="l-title">
<img src="@/assets/img/course2.png" alt="">
课程目标
</h6>
<p class="intro">{{ teachingObjectives }}</p>
</div>
</template>
<template v-if="active === 2">
<div class="page">
<template v-if="showNoteAdd">
<el-form class="form" ref="form" label-width="120px" center>
<el-form-item class="required" label="笔记标题">
<el-input placeholder="请输入笔记标题" v-model="noteForm.noteName" maxlength="30" style="width: 400px"></el-input>
</el-form-item>
<el-form-item class="required" label="笔记内容">
<Editor api-key='rnk6zw9v267xqz7pf98twt1vmrvltmd436je7a642pckltda' v-model="noteForm.noteContent" :init="editorConfig" />
</el-form-item>
</el-form>
<div class="text-right">
<el-button type="primary" @click="submitNote">保存</el-button>
</div>
</template>
<template v-else>
<div class="tool">
<ul class="filter">
<li>
<label>搜索</label>
<el-input placeholder="请输入标题" v-model="noteKeyword" clearable></el-input>
</li>
</ul>
<div>
<el-button type="primary" @click="addNote">新增笔记</el-button>
<div class="tab-content">
<template v-if="active === 1">
<div class="page">
<h6 class="l-title">
<img src="@/assets/img/course1.png" alt="">
课程简介
</h6>
<p class="intro">{{ briefIntroduction }}</p>
</div>
<div class="page">
<h6 class="l-title">
<img src="@/assets/img/course2.png" alt="">
课程目标
</h6>
<p class="intro">{{ teachingObjectives }}</p>
</div>
</template>
<template v-if="active === 2">
<div class="page">
<template v-if="showNoteAdd">
<el-form class="form" ref="form" label-width="120px" center>
<el-form-item class="required" label="笔记标题">
<el-input placeholder="请输入笔记标题" v-model="noteForm.noteName" maxlength="30" style="width: 400px"></el-input>
</el-form-item>
<el-form-item class="required" label="笔记内容">
<Editor api-key='rnk6zw9v267xqz7pf98twt1vmrvltmd436je7a642pckltda' v-model="noteForm.noteContent" :init="editorConfig" />
</el-form-item>
</el-form>
<div class="text-right">
<el-button type="primary" @click="submitNote">保存</el-button>
</div>
</div>
<el-timeline class="timeline">
<el-timeline-item placement="top" v-for="(item, i) in notes" :key="i">
<p class="sign">{{ item.createTime }}</p>
<div class="ver">
<div>
{{ item.noteName }}
<span class="action">
<i class="el-icon-edit-outline" @click="editNote(item)"></i>
<i class="el-icon-delete" @click="delNote(item)"></i>
</span>
</div>
</div>
<div class="des" v-html="item.noteContent"></div>
</el-timeline-item>
</el-timeline>
</template>
</div>
</template>
<template v-if="active === 4">
<div class="page">
<quill ref="quill" :border="true" v-model="msg" :height="150" :toTop="false" />
<ul class="msg">
<li v-for="(item, i) in msgs" :key="i">
<div class="li-wrap">
<img :src="item.avatar" alt="" class="avatar">
<div class="texts">
<h6>
<span class="name">{{ item.userName }}</span>
发表于 {{ item.createDate }}
</h6>
<div class="des" v-html="item.content"></div>
</div>
<div class="action">
<i class="icon el-icon-chat-dot-square"></i>
<i class="icon el-icon-delete"></i>
<img class="icon" src="@/assets/img/like.png" alt="">
</template>
<template v-else>
<div class="tool">
<ul class="filter">
<li>
<label>搜索</label>
<el-input placeholder="请输入标题" v-model="noteKeyword" clearable></el-input>
</li>
</ul>
<div>
<el-button type="primary" @click="addNote">新增笔记</el-button>
</div>
</div>
<div class="reply" v-if="item.showReply">
<quill :border="true" v-model="item.replyContent" :toTop="false" :height="150" />
<div class="m-t-10 text-right">
<el-button type="primary" size="mini">提交</el-button>
<el-timeline class="timeline">
<el-timeline-item placement="top" v-for="(item, i) in notes" :key="i">
<p class="sign">{{ item.createTime }}</p>
<div class="ver">
<div>
{{ item.noteName }}
<span class="action">
<i class="el-icon-edit-outline" @click="editNote(item)"></i>
<i class="el-icon-delete" @click="delNote(item)"></i>
</span>
</div>
</div>
<div class="des" v-html="item.noteContent"></div>
</el-timeline-item>
</el-timeline>
</template>
</div>
</template>
<template v-if="active === 4">
<div class="page">
<quill ref="quill" :border="true" v-model="msg" :height="150" :toTop="false" />
<ul class="msg">
<li v-for="(item, i) in msgs" :key="i">
<div class="li-wrap">
<img :src="item.avatar" alt="" class="avatar">
<div class="texts">
<h6>
<span class="name">{{ item.userName }}</span>
发表于 {{ item.createDate }}
</h6>
<div class="des" v-html="item.content"></div>
</div>
<div class="action">
<i class="icon el-icon-chat-dot-square"></i>
<i class="icon el-icon-delete"></i>
<img class="icon" src="@/assets/img/like.png" alt="">
</div>
</div>
</div>
<ul class="msg children" v-if="item.showChildren">
<li v-for="(reply,i) in item.children" :key="i">
<div class="li-wrap">
<img class="avatar" :src="reply.avatar" alt="">
<div class="texts">
<div class="name">{{reply.userName}}</div>
<div class="des" v-html="reply.content"></div>
<div class="date">{{reply.createDate}}</div>
</div>
<div class="action">
<i class="icon el-icon-chat-dot-square"></i>
<i class="icon el-icon-delete"></i>
<img class="icon" src="@/assets/img/like.png" alt="">
</div>
</div>
<div class="reply" v-if="reply.showReply">
<quill :border="true" v-model="reply.replyContent" :toTop="false" :height="150" />
<div class="m-t-10 text-right">
<el-button type="primary" size="mini">提交</el-button>
</div>
</div>
</li>
<div class="reply" v-if="item.showReply">
<quill :border="true" v-model="item.replyContent" :toTop="false" :height="150" />
<div class="m-t-10 text-right">
<el-button type="primary" size="mini">提交</el-button>
</div>
</div>
<ul class="msg children" v-if="item.showChildren">
<li v-for="(reply,i) in item.children" :key="i">
<div class="li-wrap">
<img class="avatar" :src="reply.avatar" alt="">
<div class="texts">
<div class="name">{{reply.userName}}</div>
<div class="des" v-html="reply.content"></div>
<div class="date">{{reply.createDate}}</div>
</div>
<div class="action">
<i class="icon el-icon-chat-dot-square"></i>
<i class="icon el-icon-delete"></i>
<img class="icon" src="@/assets/img/like.png" alt="">
</div>
</div>
<div class="reply" v-if="reply.showReply">
<quill :border="true" v-model="reply.replyContent" :toTop="false" :height="150" />
<div class="m-t-10 text-right">
<el-button type="primary" size="mini">提交</el-button>
</div>
</div>
</li>
</ul>
<div v-if="item.getCommentReplyNum" class="toggle"><span @click="item.showChildren = !item.showChildren">{{item.showChildren ? '收起所有回复' : `查看所有${item.getCommentReplyNum}条回复`}} <i class="el-icon-arrow-down"></i></span></div>
</li>
</ul>
<div v-if="item.getCommentReplyNum" class="toggle"><span @click="item.showChildren = !item.showChildren">{{item.showChildren ? '收起所有回复' : `查看所有${item.getCommentReplyNum}条回复`}} <i class="el-icon-arrow-down"></i></span></div>
</li>
</ul>
</div>
</template>
</div>
</template>
</div>
<el-dialog title="请选择项目" v-loading="loading" :visible.sync="projectVisible" width="828px" custom-class="project-dia" :close-on-click-modal="false">
@ -396,25 +398,23 @@ export default {
// 10
this.overdue = isRenew
this.getChapter(1)
this.getProgress()
}).catch(res => {})
},
//
async getChapter(first) {
let res = await this.$post(`${this.api.courseLearningProgress}?courseId=${this.courseId}`);
async getChapter() {
let res = await this.$get(`${this.api.curriculumChapter}/${this.courseId}`);
this.chapterList = res.chapterList;
const list = []
res.chapterList.forEach(e => {
e.subsectionList.forEach(n => {
n.chapterId = e.id
list.push(n)
})
})
this.progressList = list
this.schedule = +(res.schedule.replace('%', ''))
if (first && this.chapterList.length && this.chapterList[0].subsectionList && this.chapterList[0].subsectionList.length) {
if (this.chapterList.length && this.chapterList[0].subsectionList && this.chapterList[0].subsectionList.length) {
this.preview(this.chapterList[0].subsectionList[0], this.chapterList[0].name, 1);
}
},
//
async getProgress() {
let res = await this.$post(`${this.api.courseLearningProgress}?courseId=${this.courseId}`);
this.progressList = res.list
this.schedule = +(res.schedule.replace('%', ''))
},
//
typeChange(id) {
this.getChapter()
@ -502,14 +502,13 @@ export default {
studySection(item) {
item.whetherToStudyOrNot ?
this.$post(`${this.api.deleteLearningProgress}?id=${item.learningProgressId}`).then(res => {
this.getChapter()
this.getProgress()
}).catch(res => {}) :
this.$post(this.api.saveLearningProgress, {
chapterId: item.chapterId,
cid: this.courseId,
subsectionId: item.id,
projectId: item.projectId,
}).then(res => {
this.getChapter()
this.getProgress()
}).catch(res => {})
},
preview(row, chapterName, showDia = 0) {
@ -1076,6 +1075,9 @@ $height: 700px;
}
}
}
.tab-content {
width: 80%;
}
@media (max-width: 1430px) {
.wrap {
padding: 12px 100px 20px;

@ -228,7 +228,7 @@ body {
}
.num5 {
bottom: 319px;
right: 36px;
right: 57px;
}
}
.main_table {

@ -80,8 +80,11 @@
}
/deep/.timeline {
padding-left: 12%;
padding-left: 10%;
overflow: hidden;
.el-timeline-item {
padding-bottom: 40px;
}
.el-timeline-item__node--normal {
top: 30px;
}
@ -96,7 +99,7 @@
.sign {
position: relative;
display: inline-block;
margin-left: -15%;
margin-left: -12.5%;
font-size: 14px;
color: #9076FF;
}
@ -110,7 +113,7 @@
justify-content: space-between;
align-items: center;
padding-bottom: 10px;
margin: -32px 0 20px;
margin: -22px 0 20px;
font-size: 18px;
color: #9076FF;
border-bottom: 1px dashed #bfbfbf;

Loading…
Cancel
Save