添加loading

master
yujialong 8 months ago
parent 55b3fb1996
commit bc40fb5f28
  1. 421
      src/pages/achievement/info/course.vue
  2. 523
      src/pages/achievement/info/project.vue
  3. 13
      src/pages/achievement/list/course.vue
  4. 14
      src/pages/achievement/list/project.vue
  5. 64
      src/pages/achievement/show/index.vue
  6. 14
      src/pages/assessment/list/index.vue
  7. 10
      src/pages/expSystem/list/index.vue
  8. 5
      src/pages/match/list/index.vue
  9. 4
      src/pages/match/manage/matchArchList.vue
  10. 19
      src/pages/match/manage/matchRank.vue
  11. 31
      src/pages/match/manage/matchSignup.vue
  12. 2
      src/pages/product/list/index.vue
  13. 11
      src/pages/project/add/index.vue

@ -8,269 +8,270 @@
</div>
</el-card>
<el-card shadow="hover"
class="m-b-20">
<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>
<div v-loading="loading">
<el-card shadow="hover"
class="m-b-20">
<el-tabs v-model="curTab"
@tab-click="tabChange">
<el-tab-pane v-for="(item) in tabs"
:label="item.name"
<el-tabs v-model="classId"
@tab-click="classChange">
<el-tab-pane v-for="(item, i) in classList"
:key="i"
:name="item.id"
:key="item.id"></el-tab-pane>
:label="item.className"></el-tab-pane>
</el-tabs>
<div class="stat">
<div class="nums">
<div class="item">
<p class="name">实验总人数</p>
<p class="val">{{ peopleNum }}</p>
</div>
<div class="item item2">
<p class="name">实验平均分</p>
<p class="val">{{ avgScore }}</p>
<el-card shadow="hover"
class="m-b-20">
<el-tabs v-model="curTab"
@tab-click="tabChange">
<el-tab-pane v-for="(item) in tabs"
:label="item.name"
:name="item.id"
:key="item.id"></el-tab-pane>
</el-tabs>
<div class="stat">
<div class="nums">
<div class="item">
<p class="name">实验总人数</p>
<p class="val">{{ peopleNum }}</p>
</div>
<div class="item item2">
<p class="name">实验平均分</p>
<p class="val">{{ avgScore }}</p>
</div>
<div class="item item3">
<p class="name">实验最高分</p>
<p class="val">{{ maxScore || 0 }}</p>
</div>
<div class="item item4">
<p class="name">实验最低分</p>
<p class="val">{{ minScore || 0 }}</p>
</div>
</div>
<div class="item item3">
<p class="name">实验最高分</p>
<p class="val">{{ maxScore || 0 }}</p>
<div class="chart"
id="chart"></div>
</div>
</el-card>
<el-card shadow="hover"
class="m-b-20">
<h6 style="font-size: 16px">错误率分析</h6>
<div class="wrong">
<div class="line">
<span class="jud-name">错误率最高{{ max.projectName }}</span>
<span>参加考试{{ permissions ? (max.numberOfParticipants || 0) : (max.quantityAfterWeightRemoval || 0) }}&emsp;&emsp;{{ curTab == 1 ? `${max.itemErrorCount || 0}人做错,` : '' }}错误率{{ max.errorRate || 0 }}%</span>
</div>
<div class="item item4">
<p class="name">实验最低分</p>
<p class="val">{{ minScore || 0 }}</p>
<div class="line">
<span class="jud-name">错误率最低{{ min.projectName }}</span>
<span>参加考试{{ permissions ? (min.numberOfParticipants || 0) : (min.quantityAfterWeightRemoval || 0) }}&emsp;&emsp;{{ curTab == 1 ? `${min.itemErrorCount || 0}人做错,` : '' }}错误率{{ min.errorRate || 0 }}%</span>
</div>
</div>
<div class="chart"
id="chart"></div>
</div>
</el-card>
id="chart1"></div>
</el-card>
<el-card shadow="hover"
class="m-b-20">
<h6 style="font-size: 16px">错误率分析</h6>
<div class="wrong">
<div class="line">
<span class="jud-name">错误率最高{{ max.projectName }}</span>
<span>参加考试{{ permissions ? (max.numberOfParticipants || 0) : (max.quantityAfterWeightRemoval || 0) }}&emsp;&emsp;{{ curTab == 1 ? `${max.itemErrorCount || 0}人做错,` : '' }}错误率{{ max.errorRate || 0 }}%</span>
<el-card shadow="hover">
<div class="flex-between m-b-20">
<div>
<el-input placeholder="请输入姓名/学号"
prefix-icon="el-icon-search"
v-model="keyword"
clearable></el-input>
</div>
<div>
<el-button type="primary"
@click="exportData">导出成绩列表</el-button>
<!-- <el-button type="primary"
@click="exportReport">导出成绩详情</el-button> -->
</div>
</div>
<div class="line">
<span class="jud-name">错误率最低{{ min.projectName }}</span>
<span>参加考试{{ permissions ? (min.numberOfParticipants || 0) : (min.quantityAfterWeightRemoval || 0) }}&emsp;&emsp;{{ curTab == 1 ? `${min.itemErrorCount || 0}人做错,` : '' }}错误率{{ min.errorRate || 0 }}%</span>
<el-table :data="listData"
class="table"
ref="table"
:key="curTab"
stripe
header-align="center"
@selection-change="handleSelectionChange"
row-key="reportId">
<el-table-column type="selection"
width="55"
align="center"
:reserve-selection="true"></el-table-column>
<el-table-column type="index"
width="60"
label="序号"
align="center">
<template slot-scope="scope">
{{ scope.$index + (page - 1) * pageSize + 1 }}
</template>
</el-table-column>
<el-table-column prop="userName"
label="姓名"
align="center"></el-table-column>
<el-table-column prop="workNumber"
label="学号"
align="center"></el-table-column>
<template v-if="curTab == 0">
<el-table-column label="练习项目数"
align="center">
<template slot-scope="scope">
{{ scope.row.totalNumberOfPractices }}
</template>
</el-table-column>
<el-table-column prop="numberOfExercises"
label="练习次数"
width="90"
align="center"></el-table-column>
<el-table-column label="累计练习时长"
align="center">
<template slot-scope="scope">
{{ scope.row.cumulativePracticeTime }}min
</template>
</el-table-column>
</template>
<template v-else>
<el-table-column prop="totalNumberOfParticipants"
label="参加考核次数"
align="center">
</el-table-column>
<el-table-column prop="averageTimeSpent"
label="平均用时"
align="center">
<template slot-scope="scope">
{{ scope.row.averageTimeSpent }}min
</template>
</el-table-column>
</template>
<el-table-column prop="avgScore"
label="平均分"
align="center">
<template slot-scope="scope">
{{ curTab == 0 ? scope.row.avgScore : scope.row.averageScore }}
</template>
</el-table-column>
<el-table-column prop="maxScore"
label="最高分"
align="center"></el-table-column>
<el-table-column prop="minScore"
label="最低分"
align="center"></el-table-column>
<el-table-column label="操作"
align="center"
width="140">
<template slot-scope="scope">
<el-button type="text"
@click="show(scope.row)">查看成绩详情</el-button>
</template>
</el-table-column>
</el-table>
<div class="pagination">
<el-pagination background
layout="total, prev, pager, next"
:total="total"
@current-change="handleCurrentChange"
:current-page="page">
</el-pagination>
</div>
</div>
<div class="chart"
id="chart1"></div>
</el-card>
</el-card>
<el-card shadow="hover">
<div class="flex-between m-b-20">
<div>
<el-input placeholder="请输入姓名/学号"
prefix-icon="el-icon-search"
v-model="keyword"
clearable></el-input>
</div>
<div>
<el-button type="primary"
@click="exportData">导出成绩列表</el-button>
<!-- <el-button type="primary"
@click="exportReport">导出成绩详情</el-button> -->
</div>
<el-dialog title="成绩详情"
:visible.sync="detailVisible"
width="900px"
:key="curTab"
:close-on-click-modal="false">
<div class="m-b-10 text-right">
<el-button type="primary"
@click="exportDetail">导出</el-button>
</div>
<el-table :data="listData"
class="table"
ref="table"
:key="curTab"
<el-table :data="details"
stripe
:key="curTab"
header-align="center"
@selection-change="handleSelectionChange"
row-key="reportId">
<el-table-column type="selection"
width="55"
align="center"
:reserve-selection="true"></el-table-column>
row-key="id">
<el-table-column type="index"
width="60"
label="序号"
align="center">
<template slot-scope="scope">
{{ scope.$index + (page - 1) * pageSize + 1 }}
{{ scope.$index + (pageDetail - 1) * pageSizeDetail + 1 }}
</template>
</el-table-column>
<el-table-column prop="userName"
label="姓名"
align="center"></el-table-column>
width="100"
align="center">
</el-table-column>
<el-table-column prop="workNumber"
label="学号"
width="100"
align="center"></el-table-column>
<template v-if="curTab == 0">
<el-table-column label="练习项目数"
align="center">
<template slot-scope="scope">
{{ scope.row.totalNumberOfPractices }}
</template>
</el-table-column>
<el-table-column prop="numberOfExercises"
label="练习次数"
width="90"
<el-table-column prop="projectName"
label="项目名称"
min-width="200"
align="center"></el-table-column>
<el-table-column label="累计练习时长"
<el-table-column prop="averageDuration"
label="平均练习时长"
width="110"
align="center">
<template slot-scope="scope">
{{ scope.row.cumulativePracticeTime }}min
{{ scope.row.averageDuration }}min
</template>
</el-table-column>
<el-table-column prop="averageScore"
label="平均分"
min-width="100"
align="center"></el-table-column>
</template>
<template v-else>
<el-table-column prop="totalNumberOfParticipants"
label="参加考核次数"
align="center">
</el-table-column>
<el-table-column prop="averageTimeSpent"
label="平均用时"
<el-table-column prop="experimentalName"
label="考核名称"
min-width="200"
align="center"></el-table-column>
<el-table-column prop="averageDuration"
label="用时"
width="100"
align="center">
<template slot-scope="scope">
{{ scope.row.averageTimeSpent }}min
{{ scope.row.timeSum }}min
</template>
</el-table-column>
<el-table-column prop="score"
label="分数"
min-width="100"
align="center"></el-table-column>
</template>
<el-table-column prop="avgScore"
label="平均分"
align="center">
<template slot-scope="scope">
{{ curTab == 0 ? scope.row.avgScore : scope.row.averageScore }}
</template>
</el-table-column>
<el-table-column prop="maxScore"
label="最高分"
align="center"></el-table-column>
<el-table-column prop="minScore"
label="最低分"
align="center"></el-table-column>
<el-table-column label="操作"
<el-table-column label="成绩报告"
align="center"
width="140">
width="90">
<template slot-scope="scope">
<el-button type="text"
@click="show(scope.row)">查看成绩详情</el-button>
@click="toReport(scope.row)">查看</el-button>
</template>
</el-table-column>
</el-table>
<div class="pagination">
<el-pagination background
layout="total, prev, pager, next"
:total="total"
@current-change="handleCurrentChange"
:current-page="page">
:total="totalDetail"
:page-size="pageSizeDetail"
@current-change="handleCurrentDetailChange"
:current-page="pageDetail">
</el-pagination>
</div>
</el-card>
</el-card>
<el-dialog title="成绩详情"
:visible.sync="detailVisible"
width="900px"
:key="curTab"
:close-on-click-modal="false">
<div class="m-b-10 text-right">
<el-button type="primary"
@click="exportDetail">导出</el-button>
</div>
<el-table :data="details"
stripe
:key="curTab"
header-align="center"
row-key="id">
<el-table-column type="index"
width="60"
label="序号"
align="center">
<template slot-scope="scope">
{{ scope.$index + (pageDetail - 1) * pageSizeDetail + 1 }}
</template>
</el-table-column>
<el-table-column prop="userName"
label="姓名"
width="100"
align="center">
</el-table-column>
<el-table-column prop="workNumber"
label="学号"
width="100"
align="center"></el-table-column>
<template v-if="curTab == 0">
<el-table-column prop="projectName"
label="项目名称"
min-width="200"
align="center"></el-table-column>
<el-table-column prop="averageDuration"
label="平均练习时长"
width="110"
align="center">
<template slot-scope="scope">
{{ scope.row.averageDuration }}min
</template>
</el-table-column>
<el-table-column prop="averageScore"
label="平均分"
min-width="100"
align="center"></el-table-column>
</template>
<template v-else>
<el-table-column prop="experimentalName"
label="考核名称"
min-width="200"
align="center"></el-table-column>
<el-table-column prop="averageDuration"
label="用时"
width="100"
align="center">
<template slot-scope="scope">
{{ scope.row.timeSum }}min
</template>
</el-table-column>
<el-table-column prop="score"
label="分数"
min-width="100"
align="center"></el-table-column>
</template>
<el-table-column label="成绩报告"
align="center"
width="90">
<template slot-scope="scope">
<el-button type="text"
@click="toReport(scope.row)">查看</el-button>
</template>
</el-table-column>
</el-table>
<div class="pagination">
<el-pagination background
layout="total, prev, pager, next"
:total="totalDetail"
:page-size="pageSizeDetail"
@current-change="handleCurrentDetailChange"
:current-page="pageDetail">
</el-pagination>
</div>
<span slot="footer"
class="dialog-footer">
<el-button size="small"
type="primary"
@click="detailVisible = false">确定</el-button>
</span>
</el-dialog>
<span slot="footer"
class="dialog-footer">
<el-button size="small"
type="primary"
@click="detailVisible = false">确定</el-button>
</span>
</el-dialog>
</div>
</div>
</template>
<script>
import { Loading } from "element-ui";
import Setting from "@/setting";
import util from "@/libs/util";
import echarts from "echarts";
@ -320,7 +321,7 @@ export default {
totalDetail: 0,
curRow: {},
stageNumber: {},
loadIns: null
loading: false,
};
},
watch: {
@ -338,9 +339,7 @@ export default {
methods: {
//
async getData () {
this.loadIns = Loading.service({
background: "rgba(255,255,255,.6)"
})
this.loading = true
const per = +this.curTab
const res = await this.$post(this.api.productReadScore, {
pageNum: this.page,
@ -587,7 +586,7 @@ export default {
color: ["#8191fd"]
}]
})
this.loadIns.close()
this.loading = false
},
//
errorChart () {

@ -6,276 +6,277 @@
<span class="name">{{ experimentalName }}</span>
</div>
<el-card v-if="classes.length"
shadow="hover"
class="m-b-20 head-card">
<div class="flex-between m-b-20">
<div>
<span class="m-r-10">班级</span>
<el-select v-model="classId"
clearable
@change="initData">
<el-option label="不限"
value="">
</el-option>
<el-option v-for="item in classes"
:key="item.id"
:label="item.className"
:value="item.id">
</el-option>
</el-select>
<div v-loading="loading">
<el-card v-if="classes.length"
shadow="hover"
class="m-b-20 head-card">
<div class="flex-between m-b-20">
<div>
<span class="m-r-10">班级</span>
<el-select v-model="classId"
clearable
@change="initData">
<el-option label="不限"
value="">
</el-option>
<el-option v-for="item in classes"
:key="item.id"
:label="item.className"
:value="item.id">
</el-option>
</el-select>
</div>
</div>
</div>
</el-card>
</el-card>
<el-card shadow="hover"
class="m-b-20">
<div class="stat">
<div class="nums">
<div class="item">
<p class="name">{{ permissions && classId != 1 ? '已参加/应参加实验人数' : '实验总人数' }}</p>
<p class="val">{{ peopleNum + (permissions && classId != 1 ? '/' + examCount : '') }}</p>
</div>
<div class="item item2">
<p class="name">实验平均分</p>
<p class="val">{{ avgScore }}</p>
<el-card shadow="hover"
class="m-b-20">
<div class="stat">
<div class="nums">
<div class="item">
<p class="name">{{ permissions && classId != 1 ? '已参加/应参加实验人数' : '实验总人数' }}</p>
<p class="val">{{ peopleNum + (permissions && classId != 1 ? '/' + examCount : '') }}</p>
</div>
<div class="item item2">
<p class="name">实验平均分</p>
<p class="val">{{ avgScore }}</p>
</div>
<div class="item item3">
<p class="name">实验最高分</p>
<p class="val">{{ maxScore }}</p>
</div>
<div class="item item4">
<p class="name">实验最低分</p>
<p class="val">{{ minScore }}</p>
</div>
</div>
<div class="item item3">
<p class="name">实验最高分</p>
<p class="val">{{ maxScore }}</p>
<div class="chart"
id="chart"></div>
</div>
</el-card>
<el-card shadow="hover"
class="m-b-20">
<h6 style="font-size: 16px">错误率分析</h6>
<div class="wrong">
<div class="line">
<span class="jud-name">错误率最高{{ max.judgmentName }}</span>
<span>参加考试{{ peopleNum }}&emsp;&emsp;{{ permissions ? `${max.errorTotal || 0}人做错,` : '' }}错误率{{ max.errorRate }}%</span>
</div>
<div class="item item4">
<p class="name">实验最低分</p>
<p class="val">{{ minScore }}</p>
<div class="line">
<span class="jud-name">错误率最低{{ min.judgmentName }}</span>
<span>参加考试{{ peopleNum }}&emsp;&emsp;{{ permissions ? `${min.errorTotal || 0}人做错,` : '' }}错误率{{ min.errorRate }}%</span>
</div>
</div>
<div class="chart"
id="chart"></div>
</div>
</el-card>
<el-card shadow="hover"
class="m-b-20">
<h6 style="font-size: 16px">错误率分析</h6>
<div class="wrong">
<div class="line">
<span class="jud-name">错误率最高{{ max.judgmentName }}</span>
<span>参加考试{{ peopleNum }}&emsp;&emsp;{{ permissions ? `${max.errorTotal || 0}人做错,` : '' }}错误率{{ max.errorRate }}%</span>
</div>
<div class="line">
<span class="jud-name">错误率最低{{ min.judgmentName }}</span>
<span>参加考试{{ peopleNum }}&emsp;&emsp;{{ permissions ? `${min.errorTotal || 0}人做错,` : '' }}错误率{{ min.errorRate }}%</span>
</div>
</div>
<div class="chart"
id="chart1"></div>
</el-card>
id="chart1"></div>
</el-card>
<el-card shadow="hover">
<div class="flex-between m-b-10">
<div>
<el-tabs v-model="curTab"
@tab-click="initData">
<el-tab-pane v-for="(item) in tabs"
:label="item.name"
:name="item.id"
:key="item.id"></el-tab-pane>
</el-tabs>
</div>
</div>
<div class="flex-between m-b-20">
<div>
<el-input placeholder="请输入姓名/学号"
prefix-icon="el-icon-search"
v-model="keyword"
clearable></el-input>
</div>
<div v-if="curTab == 0">
<el-button type="primary"
@click="delAllData">批量删除</el-button>
<el-button type="primary"
@click="exportData">导出成绩列表</el-button>
<el-button type="primary"
@click="exportReport">导出成绩报告</el-button>
</div>
<div v-else>
<el-button type="primary"
@click="exportDataActivation">导出</el-button>
</div>
</div>
<template v-if="curTab == 0">
<el-table :data="listData"
:key="1"
class="table"
ref="table"
stripe
header-align="center"
@selection-change="handleSelectionChange"
row-key="reportId">
<el-table-column type="selection"
width="55"
align="center"
:reserve-selection="true"></el-table-column>
<el-table-column type="index"
width="60"
label="序号"
align="center">
<template slot-scope="scope">
{{ scope.$index + (page - 1) * pageSize + 1 }}
</template>
</el-table-column>
<el-table-column prop="className"
label="班级"
min-width="150"
align="center">
</el-table-column>
<el-table-column v-if="permissions"
prop="experimentalName"
label="考核名称"
min-width="250"
align="center"></el-table-column>
<el-table-column prop="userName"
label="学生姓名"
min-width="100"
align="center"></el-table-column>
<el-table-column prop="workNumber"
label="学号"
min-width="100"
align="center"></el-table-column>
<el-table-column prop="score"
label="分数"
width="90"
align="center"></el-table-column>
<el-table-column prop="timeSum"
label="耗时"
width="90"
align="center">
<template slot-scope="scope">
{{ scope.row.timeSum + (scope.row.reportId ? 'min' : '') }}
</template>
</el-table-column>
<el-table-column prop="submitTime"
label="提交时间"
min-width="150"
align="center">
</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="操作"
align="center"
width="160">
<template slot-scope="scope">
<tempalte v-if="scope.row.reportId">
<el-button type="text"
@click="show(scope.row)">查看成绩报告</el-button>
<el-button type="text"
@click="handleDelete(scope.row)">删除</el-button>
</tempalte>
</template>
</el-table-column>
</el-table>
<div class="pagination">
<el-pagination background
layout="total, prev, pager, next"
:total="total"
@current-change="handleCurrentChange"
:current-page="page">
</el-pagination>
<el-card shadow="hover">
<div class="flex-between m-b-10">
<div>
<el-tabs v-model="curTab"
@tab-click="initData">
<el-tab-pane v-for="(item) in tabs"
:label="item.name"
:name="item.id"
:key="item.id"></el-tab-pane>
</el-tabs>
</div>
</div>
</template>
<template v-else>
<el-table :data="activations"
:key="2"
ref="table"
stripe
header-align="center"
@selection-change="handleSelectionActivationChange"
row-key="reportId">
<el-table-column type="selection"
width="55"
align="center"
:reserve-selection="true"></el-table-column>
<el-table-column type="index"
width="60"
label="序号"
align="center">
<template slot-scope="scope">
{{ scope.$index + (pageActivation - 1) * pageSizeActivation + 1 }}
</template>
</el-table-column>
<el-table-column prop="className"
label="班级"
min-width="150"
align="center">
</el-table-column>
<el-table-column prop="userName"
label="学生姓名"
min-width="100"
align="center"></el-table-column>
<el-table-column prop="workNumber"
label="学号"
min-width="100"
align="center"></el-table-column>
<el-table-column prop="practiceNum"
label="练习次数"
min-width="90"
align="center"></el-table-column>
<el-table-column prop="avgScore"
label="实验平均分"
min-width="90"
align="center"></el-table-column>
<el-table-column prop="highestScore"
label="实验最高分"
min-width="90"
align="center"></el-table-column>
<el-table-column prop="lowestMark"
label="实验最低分"
min-width="90"
align="center"></el-table-column>
<el-table-column prop="timeSum"
label="耗时最多"
min-width="90"
align="center">
<template slot-scope="scope">
{{ scope.row.theLongestTime }}min
</template>
</el-table-column>
<el-table-column prop="timeSum"
label="耗时最少"
min-width="90"
align="center">
<template slot-scope="scope">
{{ scope.row.shortestTime }}min
</template>
</el-table-column>
<el-table-column prop="lastSubmissionTime"
label="最近提交时间"
min-width="150"
align="center">
</el-table-column>
</el-table>
<div class="pagination">
<el-pagination background
layout="total, prev, pager, next"
:total="totalActivation"
@current-change="handleCurrentActivationChange"
:current-page="pageActivation">
</el-pagination>
<div class="flex-between m-b-20">
<div>
<el-input placeholder="请输入姓名/学号"
prefix-icon="el-icon-search"
v-model="keyword"
clearable></el-input>
</div>
<div v-if="curTab == 0">
<el-button type="primary"
@click="delAllData">批量删除</el-button>
<el-button type="primary"
@click="exportData">导出成绩列表</el-button>
<el-button type="primary"
@click="exportReport">导出成绩报告</el-button>
</div>
<div v-else>
<el-button type="primary"
@click="exportDataActivation">导出</el-button>
</div>
</div>
</template>
</el-card>
<template v-if="curTab == 0">
<el-table :data="listData"
:key="1"
class="table"
ref="table"
stripe
header-align="center"
@selection-change="handleSelectionChange"
row-key="reportId">
<el-table-column type="selection"
width="55"
align="center"
:reserve-selection="true"></el-table-column>
<el-table-column type="index"
width="60"
label="序号"
align="center">
<template slot-scope="scope">
{{ scope.$index + (page - 1) * pageSize + 1 }}
</template>
</el-table-column>
<el-table-column prop="className"
label="班级"
min-width="150"
align="center">
</el-table-column>
<el-table-column v-if="permissions"
prop="experimentalName"
label="考核名称"
min-width="250"
align="center"></el-table-column>
<el-table-column prop="userName"
label="学生姓名"
min-width="100"
align="center"></el-table-column>
<el-table-column prop="workNumber"
label="学号"
min-width="100"
align="center"></el-table-column>
<el-table-column prop="score"
label="分数"
width="90"
align="center"></el-table-column>
<el-table-column prop="timeSum"
label="耗时"
width="90"
align="center">
<template slot-scope="scope">
{{ scope.row.timeSum + (scope.row.reportId ? 'min' : '') }}
</template>
</el-table-column>
<el-table-column prop="submitTime"
label="提交时间"
min-width="150"
align="center">
</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="操作"
align="center"
width="160">
<template slot-scope="scope">
<tempalte v-if="scope.row.reportId">
<el-button type="text"
@click="show(scope.row)">查看成绩报告</el-button>
<el-button type="text"
@click="handleDelete(scope.row)">删除</el-button>
</tempalte>
</template>
</el-table-column>
</el-table>
<div class="pagination">
<el-pagination background
layout="total, prev, pager, next"
:total="total"
@current-change="handleCurrentChange"
:current-page="page">
</el-pagination>
</div>
</template>
<template v-else>
<el-table :data="activations"
:key="2"
ref="table"
stripe
header-align="center"
@selection-change="handleSelectionActivationChange"
row-key="reportId">
<el-table-column type="selection"
width="55"
align="center"
:reserve-selection="true"></el-table-column>
<el-table-column type="index"
width="60"
label="序号"
align="center">
<template slot-scope="scope">
{{ scope.$index + (pageActivation - 1) * pageSizeActivation + 1 }}
</template>
</el-table-column>
<el-table-column prop="className"
label="班级"
min-width="150"
align="center">
</el-table-column>
<el-table-column prop="userName"
label="学生姓名"
min-width="100"
align="center"></el-table-column>
<el-table-column prop="workNumber"
label="学号"
min-width="100"
align="center"></el-table-column>
<el-table-column prop="practiceNum"
label="练习次数"
min-width="90"
align="center"></el-table-column>
<el-table-column prop="avgScore"
label="实验平均分"
min-width="90"
align="center"></el-table-column>
<el-table-column prop="highestScore"
label="实验最高分"
min-width="90"
align="center"></el-table-column>
<el-table-column prop="lowestMark"
label="实验最低分"
min-width="90"
align="center"></el-table-column>
<el-table-column prop="timeSum"
label="耗时最多"
min-width="90"
align="center">
<template slot-scope="scope">
{{ scope.row.theLongestTime }}min
</template>
</el-table-column>
<el-table-column prop="timeSum"
label="耗时最少"
min-width="90"
align="center">
<template slot-scope="scope">
{{ scope.row.shortestTime }}min
</template>
</el-table-column>
<el-table-column prop="lastSubmissionTime"
label="最近提交时间"
min-width="150"
align="center">
</el-table-column>
</el-table>
<div class="pagination">
<el-pagination background
layout="total, prev, pager, next"
:total="totalActivation"
@current-change="handleCurrentActivationChange"
:current-page="pageActivation">
</el-pagination>
</div>
</template>
</el-card>
</div>
</div>
</template>
<script>
import { Loading } from "element-ui";
import Setting from "@/setting";
import util from "@/libs/util";
import echarts from "echarts";
@ -320,7 +321,7 @@ export default {
pageActivation: 1,
pageSizeActivation: 10,
totalActivation: 0,
loadIns: null,
loading: false,
scores: {}
};
},
@ -366,9 +367,7 @@ export default {
},
//
async getData () {
this.loadIns = Loading.service({
background: "rgba(255,255,255,.6)"
})
this.loading = true
try {
//
const res = this.permissions ?
@ -388,7 +387,7 @@ export default {
this.getChart()
this.errorChart()
} catch (e) {
this.loadIns.close()
this.loading = false
}
},
//
@ -561,7 +560,7 @@ export default {
color: ["#8191fd"]
}]
})
this.loadIns.close()
this.loading = false
},
//
errorChart () {

@ -1,5 +1,6 @@
<template>
<div class="page">
<div class="page"
v-loading="loading">
<h6 class="p-title">筛选</h6>
<div class="tool mul">
<ul class="filter">
@ -136,7 +137,7 @@ export default {
page: this.$route.query.page ? +this.$route.query.page : 1,
pageSize: 10,
total: 0,
loadIns: null
loading: false,
};
},
watch: {
@ -203,9 +204,7 @@ export default {
}).catch(res => { })
},
getData () {
this.loadIns = Loading.service({
background: "rgba(255,255,255,.6)"
});
this.loading = true
this.$post(this.api.practiceByProduct, {
classId: this.classId,
mallId: this.mallId,
@ -216,10 +215,10 @@ export default {
this.list = res.data
this.total = res.total
this.$nextTick(() => {
this.loadIns.close()
this.loading = false
});
}).catch(res => {
this.loadIns.close()
this.loading = false
});
},
//

@ -1,5 +1,6 @@
<template>
<div class="page">
<div class="page"
v-loading="loading">
<h6 class="p-title">筛选</h6>
<div class="tool mul">
<ul class="filter">
@ -158,7 +159,6 @@
</template>
<script>
import { Loading } from "element-ui";
import util from "@/libs/util";
export default {
name: "achievement",
@ -203,7 +203,7 @@ export default {
page: this.$route.query.page ? +this.$route.query.page : 1,
pageSize: 10,
total: 0,
loadIns: null
loading: false,
};
},
watch: {
@ -275,9 +275,7 @@ export default {
}).catch(res => { })
},
getData () {
this.loadIns = Loading.service({
background: "rgba(255,255,255,.6)"
})
this.loading = true
const per = this.projectPermissions
const { mallId } = this
const cur = this.curs.find(e => e.mallId == mallId) || {}
@ -311,10 +309,10 @@ export default {
})
this.listData = list
this.$nextTick(() => {
this.loadIns.close()
this.loading = false
});
}).catch(res => {
this.loadIns.close()
this.loading = false
});
},
//

@ -6,7 +6,8 @@
content="查看报告"></el-page-header>
</el-card>
<div class="content">
<div class="content"
v-loading="loading">
<div class="text-right">
<el-button type="primary"
@click="exportPage">导出报告</el-button>
@ -243,36 +244,36 @@ export default {
this.getData()
},
methods: {
getData () { //
this.$get(`${this.api.reportDetail}?reportId=${this.reportId}`).then(({ report, userScores }) => {
this.form = report
this.expData = userScores
this.project = this.expData.find(e => e.lcRuleRecords) // lcRuleRecords
let form = this.form;
this.infoData = {
workNumber: form.workNumber,
experimentalClassName: form.experimentalClassName,
instructor: form.instructor,
period: form.period,
laboratory: form.laboratory,
submitTime: form.submitTime,
score: form.score,
userName: form.userName,
className: form.className
}
const data = report.data
this.userScores = userScores
// data使
if (!data) {
this.handleList(userScores)
this.$post(this.api.editExperimentalData, {
reportId,
data: JSON.stringify(userScores)
}).then(res => { }).catch(err => { })
} else {
this.handleList(userScores.find(e => e.lcRuleRecords) ? userScores : JSON.parse(data))
}
}).catch(res => { })
async getData () { //
this.loading = true
const { report, userScores } = await this.$get(`${this.api.reportDetail}?reportId=${this.reportId}`)
this.form = report
this.expData = userScores
this.project = this.expData.find(e => e.lcRuleRecords) // lcRuleRecords
let form = this.form;
this.infoData = {
workNumber: form.workNumber,
experimentalClassName: form.experimentalClassName,
instructor: form.instructor,
period: form.period,
laboratory: form.laboratory,
submitTime: form.submitTime,
score: form.score,
userName: form.userName,
className: form.className
}
const data = report.data
this.userScores = userScores
// data使
if (!data) {
this.handleList(userScores)
this.$post(this.api.editExperimentalData, {
reportId,
data: JSON.stringify(userScores)
}).then(res => { }).catch(err => { })
} else {
this.handleList(userScores.find(e => e.lcRuleRecords) ? userScores : JSON.parse(data))
}
},
//
handleList (list) {
@ -299,6 +300,7 @@ export default {
})
}
this.expData = list
this.loading = false
},
exportPage () {
const form = Object.assign(this.form, this.infoData)

@ -1,5 +1,6 @@
<template>
<div class="page">
<div class="page"
v-loading="loading">
<h6 class="p-title">筛选</h6>
<div class="tool mul">
<ul class="filter">
@ -91,8 +92,7 @@
</div>
</div>
<el-table v-loading="listLoading"
ref="table"
<el-table ref="table"
:data="listData"
class="table"
stripe
@ -297,7 +297,7 @@ export default {
total: 0, //
listData: [], //
multipleSelection: [], //
listLoading: false,//
loading: false,//
ticker: null, //
now: '',
};
@ -383,7 +383,7 @@ export default {
}
},
getData (counddown) {
this.listLoading = true;
this.loading = true;
const { mallIds } = this
// const cur = this.curs.find(e => e.mallId == mallIds[0])
let data = {
@ -422,9 +422,9 @@ export default {
}
});
counddown && this.beginTimer()
this.listLoading = false;
this.loading = false;
}).catch(err => {
this.listLoading = false;
this.loading = false;
});
},
initData () {

@ -1,6 +1,7 @@
<template>
<div>
<div class="page">
<div class="page"
v-loading="loading">
<h6 class="p-title">筛选</h6>
<div class="tool mul">
<ul class="filter">
@ -78,7 +79,6 @@
<script>
import Setting from "@/setting";
import util from "@/libs/util";
import Cookie from 'js-cookie'
export default {
data () {
return {
@ -112,7 +112,8 @@ export default {
1: '默认'
},
pageNo: +this.$route.query.page || 1,
pageSize: 10
pageSize: 10,
loading: false,
};
},
watch: {
@ -132,6 +133,7 @@ export default {
this.getData();
},
getData () {
this.loading = true
let data = {
type: this.systemType,
systemName: this.systemSearch,
@ -141,7 +143,9 @@ export default {
this.$post(this.api.getSystemByCustomers, data).then(({ data }) => {
this.systemData = data.records;
this.totals = data.total;
this.loading = false
}).catch(res => {
this.loading = false
});
},
handleCurrentChange (val) {

@ -1,5 +1,6 @@
<template>
<div class="page">
<div class="page"
v-loading="loading">
<h6 class="p-title">筛选</h6>
<div class="tool mul">
<ul class="filter">
@ -75,7 +76,6 @@
stripe
header-align="center"
@selection-change="handleSelectionChange"
v-loading="loading"
row-key="id">
<el-table-column type="selection"
width="55"
@ -219,7 +219,6 @@
import util from "@/libs/util";
import Setting from "@/setting";
import { mapMutations } from "vuex";
import { Loading } from 'element-ui'
import Bus from '@/libs/bus'
export default {
name: "match",

@ -381,12 +381,12 @@ export default {
stageId: this.stageId,
isNakadai: 1
})
this.loading = false
this.total = page.total
this.list = page.records
this.statData = data
this.avgScore = (+data.avgScore).toFixed(2)
this.getChart()
this.loading = false
this.method != 2 && this.getChart()
}
},
initData () {

@ -11,6 +11,7 @@
</el-card>
<el-card shadow="hover"
v-loading="loading"
class="m-b-20">
<div class="tabs">
<template v-for="(item, i) in grades">
@ -60,7 +61,6 @@
ref="table"
stripe
row-key="scoreId"
v-loading="loading"
@selection-change="handleSelectionChange"
header-align="center">
<el-table-column type="selection"
@ -372,6 +372,7 @@ export default {
},
//
getRank () {
this.loading = true
//
if (this.type) {
this.$post(this.api.manuallyUploadedRankings, {
@ -389,7 +390,9 @@ export default {
this.total = message.total
this.getPublishTime()
this.loading = false
}).catch(res => { })
}).catch(res => {
this.loading = false
})
} else { //
if (!this.active) {
//
@ -408,7 +411,9 @@ export default {
this.total = total
this.getPublishTime()
this.loading = false
}).catch(res => { })
}).catch(res => {
this.loading = false
})
} else { //
this.$post(`${this.api.stageRaceRanking}?competitionId=${this.id}&stageId=${this.active}&pageNum=${this.page}&pageSize=${this.pageSize}&publicationType=${this.type}&keyword=${this.keyword}`).then(({ page, total, publishStatus }) => {
this.published = publishStatus
@ -416,7 +421,9 @@ export default {
this.total = total
this.getPublishTime()
this.loading = false
}).catch(res => { })
}).catch(res => {
this.loading = false
})
}
}
},
@ -442,8 +449,8 @@ export default {
}
},
//
typeChange (val) {
this.$post(`${this.api.toggleTheSortingMode}?competitionId=${this.id}&stageId=${this.active || this.stageId}&isOverallRanking=${this.active ? 0 : 1}&whetherToManuallyPublish=${this.type}`).then(res => { }).catch(res => { })
async typeChange (val) {
await this.$post(`${this.api.toggleTheSortingMode}?competitionId=${this.id}&stageId=${this.active || this.stageId}&isOverallRanking=${this.active ? 0 : 1}&whetherToManuallyPublish=${this.type}`)
this.getRank()
},
initData () {

@ -53,6 +53,7 @@
header-align="center"
@selection-change="handleSelectionChange"
row-key="id"
v-loading="loading"
@sort-change="sortChange">
<el-table-column type="selection"
width="80"
@ -437,6 +438,7 @@ export default {
diffSchool: false,
uploading: false,
exporting: false,
loading: false,
};
},
watch: {
@ -458,8 +460,9 @@ export default {
this.getTeam()
this.getClient()
},
getData () {
this.$post(this.api.queryRegistrationByCondition, {
async getData () {
this.loading = true
const { data } = await this.$post(this.api.queryRegistrationByCondition, {
pageNum: this.page,
pageSize: this.pageSize,
competitionId: this.id,
@ -467,18 +470,17 @@ export default {
isDisable: this.isDisable,
schoolOrder: this.schoolOrder,
teamOrder: this.teamOrder,
}).then(({ data }) => {
const list = data.records;
list.map(e => {
if (e.teacherDetails) {
e.teachers = JSON.parse(e.teacherDetails)
}
})
this.listData = list
this.total = data.total;
this.$refs.table.clearSelection();
}).catch(res => {
});
})
const list = data.records;
list.map(e => {
if (e.teacherDetails) {
e.teachers = JSON.parse(e.teacherDetails)
}
})
this.listData = list
this.total = data.total;
this.$refs.table.clearSelection();
this.loading = false
},
//
getInfo () {
@ -718,7 +720,6 @@ export default {
this.$refs.form.validate((valid) => {
if (valid) {
if (this.submiting) return false
this.submiting = true
const { form } = this
const team = this.teams.find(e => e.teamId == form.teamId)
if (team && team.invitationCode) form.invitationCode = team.invitationCode

@ -194,7 +194,6 @@
</template>
<script>
import { Loading } from "element-ui";
import Setting from "@/setting";
export default {
data () {
@ -301,7 +300,6 @@ export default {
},
//
getData () {
// this.loadIns = Loading.service()
this.$post(this.api.websiteProductList, {
...this.form,
pageNum: this.page,

@ -1,6 +1,7 @@
<template>
<div ref="main"
class="main">
class="main"
v-loading="loading">
<el-form :disabled="isDetail">
<el-card shadow="hover"
class="m-b-20">
@ -359,7 +360,8 @@ export default {
submiting: false, //
updateTime: 0,
next: null,
backType: false
backType: false,
loading: false,
};
},
computed: {
@ -448,6 +450,7 @@ export default {
"setSystemId", "setProject"
]),
getInfoData () { //
this.loading = true
this.$get(`${this.api.getProjectDetail}?projectId=${this.projectId}`).then(res => {
let { projectManage, projectJudgmentVos } = res;
const { mallId, systemId } = projectManage
@ -464,12 +467,13 @@ export default {
this.projectJudgmentData.forEach((e, i) => {
e.sort = i + 1;
});
this.loading = false
this.$nextTick(() => {
this.$refs.main.scrollTop = 0;
this.updateTime = 0
});
}).catch(err => {
console.log(err);
this.loading = false
});
},
//
@ -484,7 +488,6 @@ export default {
e.children = data.filter(n => e.systemId.split(',').includes(n.id + '')) //
})
this.curs = res.data
console.log("🚀 ~ file: index.vue:431 ~ getSystemData ~ res.data:", res.data)
}
},
//

Loading…
Cancel
Save