Branch_d40a2540
yujialong 1 year ago
parent fea0e6ff64
commit a7a979f0f4
  1. 72
      src/pages/achievement/list/index.vue
  2. 3
      src/pages/achievement/show/index.vue
  3. 63
      src/pages/match/add/set.vue
  4. 10
      src/pages/product/show/index.vue
  5. 145
      src/pages/screen/index.vue
  6. 5
      src/pages/station/preview/index.vue
  7. 2
      src/setting.js

@ -48,16 +48,12 @@
</li> </li>
<li> <li>
<label>课程</label> <label>课程</label>
<el-select v-model="curriculumId" <el-cascader v-model="mallIds"
@change="curriculumChange"> :options="curs"
<el-option label="不限" :props="{ checkStrictly: true, value: 'id' }"
value=""></el-option> popper-class="course-cas"
<el-option v-for="item in curriculumList" @expand-change="curChange"
:key="item.cid" @change="curChange"></el-cascader>
:label="item.curriculumName"
:value="item.cid">
</el-option>
</el-select>
</li> </li>
<li> <li>
<el-input placeholder="请输入考核或项目名称" <el-input placeholder="请输入考核或项目名称"
@ -165,9 +161,12 @@ export default {
return { return {
classId: this.$route.query.class ? +this.$route.query.class : '', classId: this.$route.query.class ? +this.$route.query.class : '',
classList: [], classList: [],
curriculumId: this.$route.query.curriculum ? +this.$route.query.curriculum : '', mallId: this.$route.query.mallId ? +this.$route.query.mallId : '',
systemId: this.$route.query.systemId ? +this.$route.query.systemId : '',
curriculumList: [], curriculumList: [],
projectPermissions: this.$route.query.per ? +this.$route.query.per : 0, projectPermissions: this.$route.query.per ? +this.$route.query.per : 0,
mallIds: [],
curs: [],
keyword: "", keyword: "",
searchTimer: null, searchTimer: null,
startingtime: "", startingtime: "",
@ -231,20 +230,48 @@ export default {
} }
}, },
mounted () { mounted () {
this.getschoolCourse(); this.getClassData()
this.getClassData(); this.getCourse()
}, },
methods: { methods: {
pickerInput () { pickerInput () {
this.month = '6' this.month = '6'
}, },
getschoolCourse () { //
this.$get(this.api.schoolCourseByAchievement).then(res => { //
this.curriculumList = res.data; async getCourse () {
const { data } = await this.$get(this.api.getSystemIdBySchool)
const res = await this.$get(this.api.getSchoolEffectiveCourse)
if (res.data.length) {
res.data.map(e => {
e.id = e.mallId
e.label = e.curriculumName
e.children = data.filter(n => e.systemId.split(',').includes(n.id + '')) //
})
this.curs = res.data
this.mallIds = [this.mallId || res.data[0].mallId, this.systemId || data[0].id]
this.getData(); this.getData();
}).catch(err => { console.log("🚀 ~ file: index.vue:431 ~ getSystemData ~ res.data:", this.mallIds)
}); }
},
//
curChange (val) {
const id = val[0]
if (val.length === 1) {
//
this.mallIds = [id, this.curs.find(e => e.id == id).children[0].id]
}
this.$router.push({
path: 'list',
query: {
...this.$route.query,
mallId: this.mallIds[0],
systemId: this.mallIds[1],
}
})
this.getData()
}, },
getClassData () { // getClassData () { //
this.$post(this.api.myClass).then(res => { this.$post(this.api.myClass).then(res => {
this.classList = res.list; this.classList = res.list;
@ -256,19 +283,20 @@ export default {
background: "rgba(255,255,255,.6)" background: "rgba(255,255,255,.6)"
}); });
const per = this.projectPermissions const per = this.projectPermissions
const curriculumId = this.curriculumId const { mallIds } = this
const curr = this.curriculumList.find(e => e.cid == curriculumId) const cur = this.curs.find(e => e.mallId == mallIds[0])
let data = { let data = {
classId: this.classId, classId: this.classId,
permissions: per, permissions: per,
curriculumId, curriculumId: cur.cid,
mallId: mallIds[0],
keyWord: this.keyword, keyWord: this.keyword,
startTime: this.startingtime, startTime: this.startingtime,
endTime: this.endTime, endTime: this.endTime,
month: this.month, month: this.month,
pageNum: this.page, pageNum: this.page,
pageSize: this.pageSize, pageSize: this.pageSize,
systemId: curr ? curr.systemId : '' systemId: mallIds[1]
}; };
this.$post(this.api.getAchievementInfo, data).then(res => { this.$post(this.api.getAchievementInfo, data).then(res => {
let list = [] let list = []

@ -146,7 +146,8 @@
v-html="scope.row.referenceAnswer"></div> v-html="scope.row.referenceAnswer"></div>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="userAnswer" <el-table-column v-if="!project"
prop="userAnswer"
label="学生答案"> label="学生答案">
<template slot-scope="scope"> <template slot-scope="scope">
<div v-if='scope.row.lcRuleRecords'> <div v-if='scope.row.lcRuleRecords'>

@ -38,14 +38,12 @@
<div> <div>
<p class="m-b-20">课程</p> <p class="m-b-20">课程</p>
<div class="inline-input"> <div class="inline-input">
<el-select v-model="form.cid" <el-cascader v-model="mallIds"
@change="courseChange"> :options="curs"
<el-option v-for="item in curriculumList" :props="{ checkStrictly: true, value: 'id' }"
:key="item.cid" popper-class="course-cas"
:label="item.curriculumName" @expand-change="curChange"
:value="item.cid"> @change="curChange"></el-cascader>
</el-option>
</el-select>
</div> </div>
</div> </div>
</el-card> </el-card>
@ -131,6 +129,8 @@ export default {
return { return {
loadIns: null, loadIns: null,
curriculumList: [], curriculumList: [],
curs: [],
mallIds: [],
keyword: '', keyword: '',
projects: [], projects: [],
page: 1, page: 1,
@ -157,28 +157,47 @@ export default {
} }
}, },
mounted () { mounted () {
this.getCourse() this.getSystemData()
}, },
methods: { methods: {
// //
getCourse () { async getSystemData () {
const { data } = await this.$get(this.api.getSystemIdBySchool)
const res = await this.$get(this.api.getSchoolEffectiveCourse)
const { mallId, cid, systemId } = this.form
if (res.data.length) {
res.data.map(e => {
e.id = e.mallId
e.label = e.curriculumName
e.children = data.filter(n => e.systemId.split(',').includes(n.id + '')) //
})
this.curs = res.data
//
const first = res.data[0]
this.mallIds = [mallId || first.mallId, systemId || data[0].id]
this.form.cid = cid || first.cid
this.sysId = systemId || first.systemId
this.loadIns = Loading.service() this.loadIns = Loading.service()
this.$get(this.api.curriculumList).then(({ data }) => { this.getProject()
const list = data }
this.curriculumList = data
if (!this.form.cid && list.length) this.form.cid = list[0].cid
this.courseChange()
}).catch(err => {
this.loadIns.close()
});
}, },
// //
courseChange (val) { curChange (val) {
const { systemId } = this.curriculumList.find(e => e.cid == this.form.cid) const id = val[0]
this.sysId = systemId const item = this.curs.find(e => e.id == id)
if (val) this.loadIns = Loading.service() if (val.length === 1) {
//
this.mallIds = [id, item.children[0].id]
}
this.form.mallId = id
this.form.cid = item.cid
this.sysId = this.mallIds[1]
this.loadIns = Loading.service()
this.getProject() this.getProject()
}, },
// //
getProject () { getProject () {
this.$post(this.api.getProjectAssessmentByCompetition, { this.$post(this.api.getProjectAssessmentByCompetition, {

@ -88,7 +88,7 @@
@click="toTrail">试用体验</button> @click="toTrail">试用体验</button>
<button v-else-if="isCourse || withLink" <button v-else-if="isCourse || withLink"
class="btn entry" class="btn entry"
@click="toStation">进入实验</button> @click="toStation">进入{{ isDataforward ? '系统' : '实验' }}</button>
<button v-else-if="isValueModule" <button v-else-if="isValueModule"
class="btn entry" class="btn entry"
@click="toSystem">进入系统</button> @click="toSystem">进入系统</button>
@ -268,7 +268,13 @@ export default {
let id = this.form.classificationIds let id = this.form.classificationIds
if (id) return id[0] == 3 if (id) return id[0] == 3
return false return false
} },
//
isDataforward () {
let id = this.form.classificationIds
if (id) return id[0] == 5
return false
},
}, },
mounted () { mounted () {
this.getData() this.getData()

@ -1,7 +1,10 @@
<template> <template>
<div class="wrap"> <div class="wrap">
<!-- 全屏 --> <!-- 全屏 -->
<img class="full" src="@/assets/img/screen/full.png" alt="" @click="fullScreen"> <img class="full"
src="@/assets/img/screen/full.png"
alt=""
@click="fullScreen">
<!--header--> <!--header-->
<div class="header"> <div class="header">
<div class="bg_header"> <div class="bg_header">
@ -34,13 +37,18 @@
<i class="b_r_line"></i> <i class="b_r_line"></i>
</div> </div>
<div class="main_title"> <div class="main_title">
<img src="@/assets/img/screen/t_1.png" alt=""> <img src="@/assets/img/screen/t_1.png"
alt="">
平台考试数据统计 平台考试数据统计
</div> </div>
<ul class="time-switch"> <ul class="time-switch">
<li v-for="(item, i) in times" :key="i" :class="{active: item.id === time}" @click="switchTime(item.id)">{{ item.name }}</li> <li v-for="(item, i) in times"
:key="i"
:class="{active: item.id === time}"
@click="switchTime(item.id)">{{ item.name }}</li>
</ul> </ul>
<div id="chart1" class="chart"></div> <div id="chart1"
class="chart"></div>
</div> </div>
<div class="item"> <div class="item">
<div class="t_line_box"> <div class="t_line_box">
@ -60,10 +68,12 @@
<i class="b_r_line"></i> <i class="b_r_line"></i>
</div> </div>
<div class="main_title"> <div class="main_title">
<img src="@/assets/img/screen/t_2.png" alt=""> <img src="@/assets/img/screen/t_2.png"
alt="">
学生成绩分布分析 学生成绩分布分析
</div> </div>
<div id="chart2" class="chart t_btn9"></div> <div id="chart2"
class="chart t_btn9"></div>
</div> </div>
<div class="item"> <div class="item">
<div class="t_line_box"> <div class="t_line_box">
@ -83,10 +93,12 @@
<i class="b_r_line"></i> <i class="b_r_line"></i>
</div> </div>
<div class="main_title"> <div class="main_title">
<img src="@/assets/img/screen/t_7.png" alt=""> <img src="@/assets/img/screen/t_7.png"
alt="">
月人均在线学习时长情况 月人均在线学习时长情况
</div> </div>
<div id="chart3" class="chart t_btn9"></div> <div id="chart3"
class="chart t_btn9"></div>
</div> </div>
<div class="item"> <div class="item">
<div class="t_line_box"> <div class="t_line_box">
@ -106,14 +118,17 @@
<i class="b_r_line"></i> <i class="b_r_line"></i>
</div> </div>
<div class="main_title"> <div class="main_title">
<img src="@/assets/img/screen/t_7.png" alt=""> <img src="@/assets/img/screen/t_7.png"
alt="">
平台登录人数 平台登录人数
</div> </div>
<div id="chart4" class="chart t_btn9"></div> <div id="chart4"
class="chart t_btn9"></div>
</div> </div>
</div> </div>
<div class="middle"> <div class="middle">
<div class="item" style="height: 620px"> <div class="item"
style="height: 620px">
<!--左上边框--> <!--左上边框-->
<div class="t_line_box"> <div class="t_line_box">
<i class="t_l_line"></i> <i class="t_l_line"></i>
@ -134,8 +149,15 @@
<i class="r_b_line"></i> <i class="r_b_line"></i>
<i class="b_r_line"></i> <i class="b_r_line"></i>
</div> </div>
<video class="video" ref="video" width="100%" height="100%" autoplay muted loop> <video class="video"
<source src="@/assets/videos/screen.mp4" type="video/mp4"> ref="video"
width="100%"
height="100%"
autoplay
muted
loop>
<source src="@/assets/videos/screen.mp4"
type="video/mp4">
您的浏览器不支持 video 标签 您的浏览器不支持 video 标签
</video> </video>
<div class="stat-mask"></div> <div class="stat-mask"></div>
@ -151,7 +173,8 @@
<p class="name">当前活跃人数</p> <p class="name">当前活跃人数</p>
</div> </div>
</div> </div>
<div class="item" style="height: 440px;"> <div class="item"
style="height: 440px;">
<!--左上边框--> <!--左上边框-->
<div class="t_line_box"> <div class="t_line_box">
<i class="t_l_line"></i> <i class="t_l_line"></i>
@ -173,14 +196,18 @@
<i class="b_r_line"></i> <i class="b_r_line"></i>
</div> </div>
<div class="main_title"> <div class="main_title">
<img src="@/assets/img/screen/t_3.png" alt=""> <img src="@/assets/img/screen/t_3.png"
alt="">
学生实验课程考核成绩趋势图 学生实验课程考核成绩趋势图
</div> </div>
<div class="chart" id="chart5" style="height: 420px"></div> <div class="chart"
id="chart5"
style="height: 420px"></div>
</div> </div>
</div> </div>
<div class="right"> <div class="right">
<div class="item" style="height: 160px"> <div class="item"
style="height: 160px">
<!--左上边框--> <!--左上边框-->
<div class="t_line_box"> <div class="t_line_box">
<i class="t_l_line"></i> <i class="t_l_line"></i>
@ -202,18 +229,23 @@
<i class="b_r_line"></i> <i class="b_r_line"></i>
</div> </div>
<div class="main_title"> <div class="main_title">
<img src="@/assets/img/screen/t_4.png" alt=""> <img src="@/assets/img/screen/t_4.png"
alt="">
本月综合学习积极性最高的实验课程 本月综合学习积极性最高的实验课程
</div> </div>
<ul class="list"> <ul class="list">
<li v-for="(item, i) in courses" :key="i"> <li v-for="(item, i) in courses"
:key="i">
<span class="index">{{ i + 1 }}</span> <span class="index">{{ i + 1 }}</span>
<p class="text">{{ item.curriculumName }}</p> <p class="text">{{ item.goodsName }}</p>
<img class="icon" src="@/assets/img/screen/medal.png" alt=""> <img class="icon"
src="@/assets/img/screen/medal.png"
alt="">
</li> </li>
</ul> </ul>
</div> </div>
<div class="item" style="height: 240px"> <div class="item"
style="height: 240px">
<!--左上边框--> <!--左上边框-->
<div class="t_line_box"> <div class="t_line_box">
<i class="t_l_line"></i> <i class="t_l_line"></i>
@ -235,19 +267,23 @@
<i class="b_r_line"></i> <i class="b_r_line"></i>
</div> </div>
<div class="main_title"> <div class="main_title">
<img src="@/assets/img/screen/t_5.png" alt=""> <img src="@/assets/img/screen/t_5.png"
alt="">
热门理论课程排行榜 热门理论课程排行榜
</div> </div>
<div class="popular-wrap" ref="popularCourses"> <div class="popular-wrap"
ref="popularCourses">
<ul class="list popular"> <ul class="list popular">
<li v-for="(item, i) in popularCourses" :key="i"> <li v-for="(item, i) in popularCourses"
:key="i">
<span class="index">{{ i + 1 }}</span> <span class="index">{{ i + 1 }}</span>
<p class="text">{{ item }}</p> <p class="text">{{ item }}</p>
</li> </li>
</ul> </ul>
</div> </div>
</div> </div>
<div class="item" style="height: 300px"> <div class="item"
style="height: 300px">
<div class="t_line_box"> <div class="t_line_box">
<i class="t_l_line"></i> <i class="t_l_line"></i>
<i class="l_t_line"></i> <i class="l_t_line"></i>
@ -265,7 +301,8 @@
<i class="b_r_line"></i> <i class="b_r_line"></i>
</div> </div>
<div class="main_title"> <div class="main_title">
<img src="@/assets/img/screen/t_7.png" alt=""> <img src="@/assets/img/screen/t_7.png"
alt="">
学霸排行榜 学霸排行榜
</div> </div>
<div class="main_table"> <div class="main_table">
@ -281,10 +318,13 @@
</thead> </thead>
</table> </table>
</div> </div>
<div class="main_table" ref="ach" style="max-height: 220px;margin-top: 0;overflow: hidden"> <div class="main_table"
ref="ach"
style="max-height: 222px;margin-top: 0;overflow: hidden">
<table> <table>
<tbody> <tbody>
<tr v-for="(item, i) in achs" :key="i"> <tr v-for="(item, i) in achs"
:key="i">
<td width="20%">{{ i + 1 }}</td> <td width="20%">{{ i + 1 }}</td>
<td width="20%">{{ item.userName }}</td> <td width="20%">{{ item.userName }}</td>
<td width="20%">{{ token ? item.className : item.schoolName }}</td> <td width="20%">{{ token ? item.className : item.schoolName }}</td>
@ -295,7 +335,8 @@
</table> </table>
</div> </div>
</div> </div>
<div class="item" style="height: 300px"> <div class="item"
style="height: 300px">
<div class="t_line_box"> <div class="t_line_box">
<i class="t_l_line"></i> <i class="t_l_line"></i>
<i class="l_t_line"></i> <i class="l_t_line"></i>
@ -313,7 +354,8 @@
<i class="b_r_line"></i> <i class="b_r_line"></i>
</div> </div>
<div class="main_title"> <div class="main_title">
<img src="@/assets/img/screen/t_7.png" alt=""> <img src="@/assets/img/screen/t_7.png"
alt="">
活跃度排行榜 活跃度排行榜
</div> </div>
<div class="main_table"> <div class="main_table">
@ -327,10 +369,13 @@
</thead> </thead>
</table> </table>
</div> </div>
<div class="main_table" ref="active" style="max-height: 230px;margin-top: 0;overflow: hidden"> <div class="main_table"
ref="active"
style="max-height: 230px;margin-top: 0;overflow: hidden">
<table> <table>
<tbody> <tbody>
<tr v-for="(item, i) in actives" :key="i"> <tr v-for="(item, i) in actives"
:key="i">
<td width="20%">{{ i + 1 }}</td> <td width="20%">{{ i + 1 }}</td>
<td width="20%">{{ token ? item.className : item.schoolName }}</td> <td width="20%">{{ token ? item.className : item.schoolName }}</td>
<td width="20%">{{ item.activityIndex }}</td> <td width="20%">{{ item.activityIndex }}</td>
@ -702,30 +747,24 @@ export default {
} }
] ]
// //
const cousrseRes = this.token ? const cousrseRes = await this.$post(this.api.listOfGoods, {
await this.$get(this.api.schoolCourse) :
await this.$post(this.api.curriculumListForBeforeLogin, {
pageNum: 1, pageNum: 1,
pageSize: 100, pageSize: 1000,
supplierId: '1,2,3,4', sort: 0,
curriculumName: '', isShelves: 0,
categoryId: '', hotTag: 1,
curriculumType: '',
professionalCategoryId: '',
professionalId: '',
}) })
if (cousrseRes) { if (cousrseRes) {
const courseList = this.token ? const courseList =
cousrseRes.data :
cousrseRes.page.records cousrseRes.page.records
const ids = courseList.map(e => e.cid) const ids = courseList.map(e => e.mallId)
times.map(e => { times.map(e => {
e.cid = ids e.mallId = ids
}) })
const courseData = {} const courseData = {}
courseList.map(e => { courseList.map(e => {
// e.curriculumName = e.curriculumName.substring(0, 10) // e.productName = e.productName.substring(0, 10)
courseData[e.curriculumName] = [] courseData[e.productName] = []
}) })
this.$post(this.api.studentAssessSchievement, times).then(({ data }) => { this.$post(this.api.studentAssessSchievement, times).then(({ data }) => {
const times = [] const times = []
@ -733,9 +772,9 @@ export default {
data.map((e, i) => { data.map((e, i) => {
times.push(e.time) times.push(e.time)
e.assesScoreRespList.map(n => { e.assesScoreRespList.map(n => {
const item = courseList.find(j => j.cid == n.curriculumId) const item = courseList.find(j => j.mallId == n.mallId)
if (item) { if (item) {
const name = item.curriculumName const name = item.productName
if (courseData[name]) { if (courseData[name]) {
courseData[name][i] = +n.avgScore courseData[name][i] = +n.avgScore
} }
@ -792,7 +831,7 @@ export default {
}, },
legend: { legend: {
top: '8%', top: '8%',
data: courseList.map(e => e.curriculumName), data: courseList.map(e => e.productName),
textStyle: { textStyle: {
color: 'rgba(255,255,255,.5)', color: 'rgba(255,255,255,.5)',
fontSize: '12', fontSize: '12',
@ -1101,5 +1140,5 @@ export default {
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
@import "../../styles/page/screen.scss"; @import '../../styles/page/screen.scss';
</style> </style>

@ -591,7 +591,7 @@ export default {
}, },
// //
async getProgress () { async getProgress () {
let res = await this.$post(`${this.api.courseLearningProgress}?courseId=${this.courseId}&systemId=${this.systemIds}`); let res = await this.$post(`${this.api.courseLearningProgress}?courseId=${this.courseId}&systemId=${this.systemIds}&mallId=${this.mallId}`);
this.progressList = res.list this.progressList = res.list
if (res.list.length) this.archProject = res.list[0].projectId if (res.list.length) this.archProject = res.list[0].projectId
this.maximumScores.length || this.getMaximumScore() this.maximumScores.length || this.getMaximumScore()
@ -907,6 +907,7 @@ export default {
this.$get(this.api.getProjectBySystemId, { this.$get(this.api.getProjectBySystemId, {
systemId: this.systemIds, systemId: this.systemIds,
cId: this.courseId, // id cId: this.courseId, // id
mallId: this.mallId,
permissions: 0 // 0: ,1: permissions: 0 // 0: ,1:
}).then(({ projects }) => { }).then(({ projects }) => {
this.loading = false this.loading = false
@ -974,7 +975,7 @@ export default {
location.href = `${Setting.bankPath}/#/index/list?curriculumName=${this.curriculumName}&token=${token}&cid=${this.courseId}&mallId=${this.mallId}&systemId=${this.systemIds}&projectId=${this.curProject}&assessmentId=&classId=&stopTime=&test=true&manager=1` location.href = `${Setting.bankPath}/#/index/list?curriculumName=${this.curriculumName}&token=${token}&cid=${this.courseId}&mallId=${this.mallId}&systemId=${this.systemIds}&projectId=${this.curProject}&assessmentId=&classId=&stopTime=&test=true&manager=1`
} else if (systemId == 12) { } else if (systemId == 12) {
// //
window.open(`http://120.78.139.126:8879?systemId=${systemId}&courseId=${this.courseId}&projectId=${this.curProject}&token=${token}&userId=${this.userId}&classId=1`); window.open(`http://120.78.139.126:8879?systemId=${systemId}&courseId=${this.courseId}&projectId=${this.curProject}&token=${token}&userId=${this.userId}&classId=1&mallId=${this.mallId}`);
} else if (systemId == 21) { } else if (systemId == 21) {
window.open(`http://121.37.29.24:80/yyyflogin?userId=${this.userId}&userName=${userName}&userType=${roleId}&reqType=1&reqId=3989a0ad671849b99dcbdcc208782333&caseId=9681f86902314b10bc752909121f9ab9&authorization=87DIVy348Oxzj3ha&classId=1876&courserId=7ff5d4715b114b7398b6f26c20fac460`); window.open(`http://121.37.29.24:80/yyyflogin?userId=${this.userId}&userName=${userName}&userType=${roleId}&reqType=1&reqId=3989a0ad671849b99dcbdcc208782333&caseId=9681f86902314b10bc752909121f9ab9&authorization=87DIVy348Oxzj3ha&classId=1876&courserId=7ff5d4715b114b7398b6f26c20fac460`);
} else if (systemId == 22) { } else if (systemId == 22) {

@ -26,7 +26,7 @@ if (isPro) {
uploadURL = `http://121.37.12.51/` uploadURL = `http://121.37.12.51/`
host = "http://121.37.12.51/"; // 中台测试服 host = "http://121.37.12.51/"; // 中台测试服
// host = 'https://www.occupationlab.com/' // 正式服 // host = 'https://www.occupationlab.com/' // 正式服
host = "http://192.168.31.152:9000/"; // 榕 // host = "http://192.168.31.152:9000/"; // 榕
// host = 'http://192.168.31.51:9000/'; // 赓 // host = 'http://192.168.31.51:9000/'; // 赓
} }

Loading…
Cancel
Save