成绩相关

master
yujialong 10 months ago
parent 3186dafffb
commit 908dc4670c
  1. 27
      public/index-occupationlab.html
  2. 9
      public/index-zxy.html
  3. 42
      src/pages/achievement/info/course.vue
  4. 47
      src/pages/achievement/info/project.vue
  5. 27
      src/pages/achievement/list/course.vue
  6. 16
      src/pages/achievement/list/project.vue
  7. 1
      src/pages/screen/index.vue
  8. 10
      src/setting.js

@ -0,0 +1,27 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />
<link rel="stylesheet" href="//at.alicdn.com/t/font_830376_qzecyukz0s.css" />
<title>教师管理端</title>
<script>
var _hmt = _hmt || [];
(function() {
var hm = document.createElement('script');
hm.src = 'https://hm.baidu.com/hm.js?72fbad6ebf1d6c705117fe8fe0686a0e';
var s = document.getElementsByTagName('script')[0];
s.parentNode.insertBefore(hm, s);
})();
</script>
</head>
<body>
<noscript>
<strong>We're sorry but vms doesn't work properly without JavaScript enabled. Please enable it to continue.</strong>
</noscript>
<div id="app"></div>
<script src="/styles/tinymce/tinymce.min.js"></script>
<!-- built files will be auto injected -->
</body>
</html>

@ -6,6 +6,15 @@
<meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" /> <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />
<link rel="stylesheet" href="//at.alicdn.com/t/font_830376_qzecyukz0s.css" /> <link rel="stylesheet" href="//at.alicdn.com/t/font_830376_qzecyukz0s.css" />
<title>教师管理端</title> <title>教师管理端</title>
<script>
var _hmt = _hmt || [];
(function() {
var hm = document.createElement('script');
hm.src = 'https://hm.baidu.com/hm.js?e4d7deeca2d6ea71d2bd5fa2365bc654';
var s = document.getElementsByTagName('script')[0];
s.parentNode.insertBefore(hm, s);
})();
</script>
</head> </head>
<body> <body>
<noscript> <noscript>

@ -6,9 +6,25 @@
<el-page-header @back="$router.push('list?tab=tab1')" <el-page-header @back="$router.push('list?tab=tab1')"
:content="goodsName"></el-page-header> :content="goodsName"></el-page-header>
</div> </div>
</el-card> </el-card>
<el-card shadow="hover"
class="m-b-20">
<!-- <el-radio-group v-model="classId"
size="small">
<el-radio v-for="(item, i) in classList"
:key="i"
:label="item.id"
@change="initData">{{ item.className }}</el-radio>
</el-radio-group> -->
<el-tabs v-model="classId"
@tab-click="classChange">
<el-tab-pane v-for="(item, i) in classList"
:key="i"
:name="item.id"
:label="item.className"></el-tab-pane>
</el-tabs>
<el-card shadow="hover" <el-card shadow="hover"
class="m-b-20"> class="m-b-20">
<el-tabs v-model="curTab" <el-tabs v-model="curTab"
@ -163,6 +179,8 @@
</div> </div>
</el-card> </el-card>
</el-card>
<el-dialog title="成绩详情" <el-dialog title="成绩详情"
:visible.sync="detailVisible" :visible.sync="detailVisible"
width="900px" width="900px"
@ -284,6 +302,7 @@ export default {
id: +this.$route.query.id, id: +this.$route.query.id,
cid: +this.$route.query.cid, cid: +this.$route.query.cid,
classId: +this.$route.query.classId, classId: +this.$route.query.classId,
classList: [],
keyword: "", keyword: "",
searchTimer: null, searchTimer: null,
listDataAll: [], listDataAll: [],
@ -320,8 +339,8 @@ export default {
} }
}, },
mounted () { mounted () {
// this.getClass() this.getClass()
this.getData() this.initData()
}, },
methods: { methods: {
// //
@ -367,6 +386,23 @@ export default {
this.page = 1 this.page = 1
this.getData() this.getData()
}, },
//
getClass () {
this.$post(this.api.allClassesInOurSchool).then(res => {
this.classList = res.data
}).catch(res => { })
},
//
classChange () {
this.$router.push({
path: 'course',
query: {
...this.$route.query,
classId: this.classId
}
})
this.initData()
},
// //
handlePage () { handlePage () {
const list = this.listDataAll const list = this.listDataAll

@ -33,8 +33,8 @@
<div class="stat"> <div class="stat">
<div class="nums"> <div class="nums">
<div class="item"> <div class="item">
<p class="name">实验总人数</p> <p class="name">{{ permissions && classId != 1 ? '已参加/应参加实验人数' : '实验总人数' }}</p>
<p class="val">{{ peopleNum }}</p> <p class="val">{{ peopleNum + (permissions && classId != 1 ? '/' + examCount : '') }}</p>
</div> </div>
<div class="item item2"> <div class="item item2">
<p class="name">实验平均分</p> <p class="name">实验平均分</p>
@ -133,11 +133,7 @@
prop="experimentalName" prop="experimentalName"
label="考核名称" label="考核名称"
min-width="250" min-width="250"
align="center"> align="center"></el-table-column>
<template slot-scope="scope">
{{ experimentalName }}
</template>
</el-table-column>
<el-table-column prop="userName" <el-table-column prop="userName"
label="学生姓名" label="学生姓名"
min-width="100" min-width="100"
@ -155,7 +151,7 @@
width="90" width="90"
align="center"> align="center">
<template slot-scope="scope"> <template slot-scope="scope">
{{ scope.row.timeSum }}min {{ scope.row.timeSum + (scope.row.reportId ? 'min' : '') }}
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="submitTime" <el-table-column prop="submitTime"
@ -163,14 +159,25 @@
min-width="150" min-width="150"
align="center"> align="center">
</el-table-column> </el-table-column>
<el-table-column v-if="permissions"
prop="submitTime"
label="状态"
min-width="150"
align="center">
<template slot-scope="scope">
{{ scope.row.reportId ? '已参加' : '未参加' }}
</template>
</el-table-column>
<el-table-column label="操作" <el-table-column label="操作"
align="center" align="center"
width="160"> width="160">
<template slot-scope="scope"> <template slot-scope="scope">
<tempalte v-if="scope.row.reportId">
<el-button type="text" <el-button type="text"
@click="show(scope.row)">查看成绩报告</el-button> @click="show(scope.row)">查看成绩报告</el-button>
<el-button type="text" <el-button type="text"
@click="handleDelete(scope.row)">删除</el-button> @click="handleDelete(scope.row)">删除</el-button>
</tempalte>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
@ -292,6 +299,7 @@ export default {
page: 1, page: 1,
pageSize: 10, pageSize: 10,
total: 0, total: 0,
examCount: 0,
peopleNum: 0, // peopleNum: 0, //
avgScore: 0, // avgScore: 0, //
maxScore: 0, maxScore: 0,
@ -359,16 +367,16 @@ export default {
const res = this.permissions ? const res = this.permissions ?
await this.$post(`${this.api.getAssessmentDetail}?pageNum=${this.page}&pageSize=10000&assessmentId=${this.id}&classId=${this.classId}&keyword=${this.keyword}&mallId=${this.mallId}`) : await this.$post(`${this.api.getAssessmentDetail}?pageNum=${this.page}&pageSize=10000&assessmentId=${this.id}&classId=${this.classId}&keyword=${this.keyword}&mallId=${this.mallId}`) :
await this.$post(`${this.api.getPracticeDetail}?pageNum=${this.page}&pageSize=10000&projectId=${this.id}&keyWord=${this.keyword}&classId=${this.classId}&mallId=${this.mallId}`) await this.$post(`${this.api.getPracticeDetail}?pageNum=${this.page}&pageSize=10000&projectId=${this.id}&keyWord=${this.keyword}&classId=${this.classId}&mallId=${this.mallId}`)
this.listDataAll = res.page.records this.listData = res.page.records
this.total = res.page.total this.total = res.page.total
this.avgScore = (+res.avgScore).toFixed(2) this.avgScore = (+res.avgScore).toFixed(2)
this.examCount = res.examCount
this.peopleNum = res.peopleNum this.peopleNum = res.peopleNum
this.maxScore = res.maxScore this.maxScore = res.maxScore
this.minScore = res.minScore this.minScore = res.minScore
this.errorAnalysis = res.errorAnalysis || {} this.errorAnalysis = res.errorAnalysis || {}
this.max = res.highestErrorRate || {} this.max = res.highestErrorRate || {}
this.min = res.minimumErrorRate || {} this.min = res.minimumErrorRate || {}
this.handlePage()
this.getChart() this.getChart()
this.errorChart() this.errorChart()
}, },
@ -402,7 +410,7 @@ export default {
: `${this.api.exportPracticeInfo}?projectId=${this.id}&mallId=${this.mallId}` : `${this.api.exportPracticeInfo}?projectId=${this.id}&mallId=${this.mallId}`
// id // id
if (this.multipleSelection.length) { if (this.multipleSelection.length) {
const ids = this.multipleSelection.map(e => e.reportId) const ids = this.multipleSelection.map(e => this.permissions ? e.testStatusId : e.reportId)
url += `&ids=${ids.toString()}` url += `&ids=${ids.toString()}`
} }
axios.get(url, { axios.get(url, {
@ -415,9 +423,17 @@ export default {
}).catch(res => { }) }).catch(res => { })
}, },
// //
exportReport () { async exportReport () {
// //
const list = this.multipleSelection.length ? this.multipleSelection : this.listDataAll let list = this.multipleSelection
if (!this.multipleSelection.length) {
//
const res = this.permissions ?
await this.$post(`${this.api.getAssessmentDetail}?pageNum=${this.page}&pageSize=10000&assessmentId=${this.id}&classId=${this.classId}&keyword=${this.keyword}&mallId=${this.mallId}`) :
await this.$post(`${this.api.getPracticeDetail}?pageNum=${this.page}&pageSize=10000&projectId=${this.id}&keyWord=${this.keyword}&classId=${this.classId}&mallId=${this.mallId}`)
list = res.page.records
}
list.forEach(async e => { list.forEach(async e => {
const { report, userScores } = await this.$get(`${this.api.reportDetail}?reportId=${e.reportId}`) const { report, userScores } = await this.$get(`${this.api.reportDetail}?reportId=${e.reportId}`)
userScores.map((e, i) => { userScores.map((e, i) => {
@ -473,7 +489,7 @@ export default {
}, },
handleCurrentChange (val) { // handleCurrentChange (val) { //
this.page = val; this.page = val;
this.handlePage(); this.getData();
}, },
handleSelectionActivationChange (val) { // handleSelectionActivationChange (val) { //
@ -481,7 +497,7 @@ export default {
}, },
handleCurrentActivationChange (val) { // handleCurrentActivationChange (val) { //
this.pageActivation = val; this.pageActivation = val;
this.handlePage(); this.getData();
}, },
// () // ()
@ -515,7 +531,6 @@ export default {
list.map(n => { list.map(n => {
yData[n.score]++ yData[n.score]++
}) })
console.log(333, xData, yData)
let myChart = echarts.init(document.getElementById("chart")); let myChart = echarts.init(document.getElementById("chart"));
myChart.setOption({ myChart.setOption({
title: { text: "实验分数分布图" }, title: { text: "实验分数分布图" },

@ -3,7 +3,7 @@
<h6 class="p-title">筛选</h6> <h6 class="p-title">筛选</h6>
<div class="tool mul"> <div class="tool mul">
<ul class="filter"> <ul class="filter">
<li> <!-- <li>
<label>课程</label> <label>课程</label>
<el-select v-model="mallId" <el-select v-model="mallId"
@change="initData"> @change="initData">
@ -28,6 +28,12 @@
:value="item.id"> :value="item.id">
</el-option> </el-option>
</el-select> </el-select>
</li> -->
<li>
<el-input placeholder="请输入课程名称"
prefix-icon="el-icon-search"
v-model="keyword"
clearable></el-input>
</li> </li>
</ul> </ul>
</div> </div>
@ -49,10 +55,10 @@
label="课程" label="课程"
align="center" align="center"
min-width="200"></el-table-column> min-width="200"></el-table-column>
<el-table-column prop="className" <!-- <el-table-column prop="className"
label="班级" label="班级"
align="center" align="center"
min-width="130"></el-table-column> min-width="130"></el-table-column> -->
<el-table-column prop="numberOfPracticeItems" <el-table-column prop="numberOfPracticeItems"
label="练习项目数" label="练习项目数"
align="center" align="center"
@ -61,10 +67,10 @@
label="考核项目数" label="考核项目数"
align="center" align="center"
min-width="100"></el-table-column> min-width="100"></el-table-column>
<el-table-column prop="classSize" <!-- <el-table-column prop="classSize"
label="班级人数" label="班级人数"
align="center" align="center"
min-width="100"></el-table-column> min-width="100"></el-table-column> -->
<el-table-column label="操作" <el-table-column label="操作"
align="center" align="center"
width="100"> width="100">
@ -98,7 +104,7 @@ export default {
projectPermissions: this.$route.query.per ? +this.$route.query.per : 0, projectPermissions: this.$route.query.per ? +this.$route.query.per : 0,
mallIds: [], mallIds: [],
curs: [], curs: [],
keyword: "", keyword: this.$route.query.keyword || '',
searchTimer: null, searchTimer: null,
startingtime: "", startingtime: "",
endTime: "", endTime: "",
@ -127,7 +133,7 @@ export default {
} }
], ],
date: "", date: "",
page: +this.$route.query.page || 1, page: this.$route.query.page ? +this.$route.query.page : 1,
pageSize: 10, pageSize: 10,
total: 0, total: 0,
loadIns: null loadIns: null
@ -156,6 +162,13 @@ export default {
keyword: function (val) { keyword: function (val) {
clearTimeout(this.searchTimer); clearTimeout(this.searchTimer);
this.searchTimer = setTimeout(() => { this.searchTimer = setTimeout(() => {
this.$router.push({
path: 'list',
query: {
...this.$route.query,
keyword: val
}
})
this.initData(); this.initData();
}, 500); }, 500);
} }

@ -170,7 +170,7 @@ export default {
projectPermissions: this.$route.query.per ? +this.$route.query.per : 0, projectPermissions: this.$route.query.per ? +this.$route.query.per : 0,
mallIds: [], mallIds: [],
curs: [], curs: [],
keyword: "", keyword: this.$route.query.keyword || '',
searchTimer: null, searchTimer: null,
startingtime: "", startingtime: "",
endTime: "", endTime: "",
@ -199,7 +199,7 @@ export default {
} }
], ],
date: "", date: "",
page: +this.$route.query.page || 1, page: this.$route.query.page ? +this.$route.query.page : 1,
pageSize: 10, pageSize: 10,
total: 0, total: 0,
loadIns: null loadIns: null
@ -228,6 +228,13 @@ export default {
keyword: function (val) { keyword: function (val) {
clearTimeout(this.searchTimer); clearTimeout(this.searchTimer);
this.searchTimer = setTimeout(() => { this.searchTimer = setTimeout(() => {
this.$router.push({
path: 'list',
query: {
...this.$route.query,
keyword: val
}
})
this.initData(); this.initData();
}, 500); }, 500);
} }
@ -246,7 +253,7 @@ export default {
const { data } = await this.$get(this.api.getSchoolEffectiveCourse) const { data } = await this.$get(this.api.getSchoolEffectiveCourse)
this.curs = data this.curs = data
this.mallId = this.mallId || data[0].mallId this.mallId = this.mallId || data[0].mallId
this.initData(); this.getData();
}, },
// //
curChange (id) { curChange (id) {
@ -294,7 +301,6 @@ export default {
list = res.page.records list = res.page.records
this.total = res.page.total this.total = res.page.total
} }
console.log(33, per)
list.map(e => { list.map(e => {
// isAdmin1 isdel=1courseDel=1 (1. 2.3)isAdmin0isDel1 // isAdmin1 isdel=1courseDel=1 (1. 2.3)isAdmin0isDel1
e.canDel = per ? e.canDel = per ?
@ -353,7 +359,7 @@ export default {
}, },
// //
entry (row) { entry (row) {
this.$router.push(`project?id=${row.assessmentId || row.projectId}&projectName=${row.projectName}&permissions=${row.permissions || 0}&mallId=${this.mallId}`) this.$router.push(`project?id=${row.assessmentId || row.projectId}&projectName=${row.projectName}&permissions=${row.permissions || 0}&mallId=${this.mallId}&classId=${row.classId}`)
}, },
handleDelete (row) { // handleDelete (row) { //
this.$confirm("该项目下的所有成绩报告将会删除,是否继续?", "提示", { this.$confirm("该项目下的所有成绩报告将会删除,是否继续?", "提示", {

@ -772,6 +772,7 @@ export default {
sort: 0, sort: 0,
isShelves: 0, isShelves: 0,
hotTag: 1, hotTag: 1,
purchaseStatus: 1
}) })
if (cousrseRes) { if (cousrseRes) {
const courseList = cousrseRes.page.records const courseList = cousrseRes.page.records

@ -15,8 +15,11 @@ let bankPath = `${location.origin}/banksystem` // 银行系统地址
let sandPath = `${location.origin}/sandbox` // 沙盘地址 let sandPath = `${location.origin}/sandbox` // 沙盘地址
let jumpPath = `${location.origin}/judgmentPoint` let jumpPath = `${location.origin}/judgmentPoint`
let host = `${location.origin}/` let host = `${location.origin}/`
let uploadURL = `${location.origin}/` // let host = `https://izhixinyun.com/`
let title = (isHh || isCH) ? '教师管理端' : '职站服务端管理系统' // let uploadURL = `${location.origin}/`
let uploadURL = `https://izhixinyun.com/`
// let title = (isHh || isCH) ? '教师管理端' : '职站服务端管理系统'
let title = '教师管理端'
if (isPro) { if (isPro) {
bankPath = `https://www.huorantech.cn/banksystem` bankPath = `https://www.huorantech.cn/banksystem`
@ -30,8 +33,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.217:9000/"; // 榕 host = "http://192.168.31.217:9000/";
// host = 'http://192.168.31.51:9000/'; // 赓
} else if (isSq) { } else if (isSq) {
zcPath = `10.20.100.204:8883` zcPath = `10.20.100.204:8883`
} }

Loading…
Cancel
Save