提交 9905ddff authored 作者: lihuihui's avatar lihuihui

Merge branch 'vite' of https://gitlab.ezijing.com/ezijing/x-learn into vite

# Conflicts: # src/modules/teacher/data/exam/index.js
...@@ -57,6 +57,7 @@ ...@@ -57,6 +57,7 @@
v-on="$listeners" v-on="$listeners"
style="height: 100%" style="height: 100%"
ref="table" ref="table"
border
> >
<template v-for="item in columns"> <template v-for="item in columns">
<el-table-column v-bind="item" :key="item.prop" v-if="visible(item)"> <el-table-column v-bind="item" :key="item.prop" v-if="visible(item)">
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
<app-container> <app-container>
<app-list v-bind="tableOptions" ref="list"> <app-list v-bind="tableOptions" ref="list">
<template #header-aside> <template #header-aside>
<el-button type="text" style="margin-top:5px;font-size:24px">导出</el-button> <el-button type="text" style="margin-top:5px;font-size:24px" @click="export">导出</el-button>
</template> </template>
</app-list> </app-list>
</app-container> </app-container>
...@@ -17,7 +17,7 @@ export default { ...@@ -17,7 +17,7 @@ export default {
remote: { remote: {
}, },
filters: [ filters: [
{ type: 'select', prop: 'class_name', placeholder: '班级名称', label: '班级名称' } { type: 'input', prop: 'class_name', placeholder: '班级名称', label: '班级名称' }
], ],
columns: [ columns: [
{ label: '班级名称', prop: 'paper_title', slots: 'table-name' }, { label: '班级名称', prop: 'paper_title', slots: 'table-name' },
...@@ -34,7 +34,10 @@ export default { ...@@ -34,7 +34,10 @@ export default {
} }
}, },
methods: { methods: {
// 导出
export() {
}
} }
} }
</script> </script>
...@@ -4,10 +4,6 @@ ...@@ -4,10 +4,6 @@
<template v-slot:progress="{ row }"> <template v-slot:progress="{ row }">
<el-progress :percentage="row.progress"></el-progress> <el-progress :percentage="row.progress"></el-progress>
</template> </template>
<!-- 操作 -->
<template v-slot:table-operate="{ row }">
<el-button type="text" size="mini">查看</el-button>
</template>
</app-list> </app-list>
</app-container> </app-container>
</template> </template>
......
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
</template> </template>
<!-- 操作 --> <!-- 操作 -->
<template v-slot:table-operate="{ row }"> <template v-slot:table-operate="{ row }">
<el-button type="text" size="mini" @click="toPersonDetail">查看</el-button> <el-button type="text" size="mini" @click="toPersonDetail(row)">查看</el-button>
</template> </template>
</app-list> </app-list>
</app-container> </app-container>
...@@ -25,7 +25,7 @@ export default { ...@@ -25,7 +25,7 @@ export default {
remote: { remote: {
}, },
filters: [ filters: [
{ type: 'select', prop: 'class_name', placeholder: '学生姓名', label: '学生姓名' } { type: 'input', prop: 'class_name', placeholder: '学生姓名', label: '学生姓名' }
], ],
columns: [ columns: [
{ label: '学生姓名', prop: 'paper_title', slots: 'table-name' }, { label: '学生姓名', prop: 'paper_title', slots: 'table-name' },
...@@ -42,9 +42,12 @@ export default { ...@@ -42,9 +42,12 @@ export default {
} }
}, },
methods: { methods: {
toPersonDetail() { toPersonDetail(row) {
this.$router.push({ this.$router.push({
path: '/detail' path: '/detail',
query: {
row: row
}
}) })
} }
} }
......
...@@ -2,10 +2,12 @@ const routes = [ ...@@ -2,10 +2,12 @@ const routes = [
{ {
path: '/', path: '/',
component: () => import('@/components/layout/index.vue'), component: () => import('@/components/layout/index.vue'),
children: [{ path: '/teacher/data/course', component: () => import('./views/List.vue') }, children: [
{ path: '/teacher/data/course', component: () => import('./views/List.vue') },
{ path: '/classDatas', component: () => import('./components/ClassList.vue') }, { path: '/classDatas', component: () => import('./components/ClassList.vue') },
{ path: '/personal', component: () => import('./components/PersonalList.vue') }, { path: '/personal', component: () => import('./components/PersonalList.vue') },
{ path: '/detail', component: () => import('./components/CourseProcessList.vue') }] { path: '/detail', component: () => import('./components/CourseProcessList.vue') },
]
} }
] ]
......
...@@ -6,8 +6,8 @@ ...@@ -6,8 +6,8 @@
<img :src="row.tableImg" alt="" /> <img :src="row.tableImg" alt="" />
</template> </template>
<template v-slot:table-operate="{ row }"> <template v-slot:table-operate="{ row }">
<el-button type="text" size="mini" @click="toClassData">班级数据</el-button> <el-button type="text" size="mini" @click="toClassData(row)">班级数据</el-button>
<el-button type="text" size="mini" @click="toPersonal">个人数据</el-button> <el-button type="text" size="mini" @click="toPersonal(row)">个人数据</el-button>
</template> </template>
</app-list> </app-list>
</app-container> </app-container>
...@@ -17,8 +17,9 @@ ...@@ -17,8 +17,9 @@
export default { export default {
data() { data() {
return { return {
visible: false, conditionList: {
currentClickRow: {} courseList: []
}
} }
}, },
computed: { computed: {
...@@ -28,7 +29,17 @@ export default { ...@@ -28,7 +29,17 @@ export default {
remote: { remote: {
}, },
filters: [ filters: [
{ type: 'select', prop: 'class_name', placeholder: '课程名称', label: '课程名称' } {
type: 'select',
prop: 'class_name',
placeholder: '课程名称',
label: '课程名称',
options: this.conditionList.courseList,
labelKey: 'course_name',
valueKey: 'course_id',
filterable: true,
remote: true
}
], ],
columns: [ columns: [
{ label: '图片', prop: 'tableImg', slots: 'table-img' }, { label: '图片', prop: 'tableImg', slots: 'table-img' },
...@@ -46,14 +57,20 @@ export default { ...@@ -46,14 +57,20 @@ export default {
} }
}, },
methods: { methods: {
toClassData() { toClassData(row) {
this.$router.push({ this.$router.push({
path: '/classDatas' path: '/classDatas',
query: {
row: row
}
}) })
}, },
toPersonal() { toPersonal(row) {
this.$router.push({ this.$router.push({
path: '/personal' path: '/personal',
query: {
row: row
}
}) })
} }
} }
......
<template>
<app-container>
<el-row type="flex" class="row-bg" justify="space-around">
<el-col :span="6"><ExamInfo /></el-col>
<el-col :span="6"><Submission /></el-col>
<el-col :span="6"><Score /></el-col>
</el-row>
<el-row type="flex" class="row-bg" justify="space-around" style="margin-top: 30px">
<el-col :span="10"><ScoreRanking /></el-col>
<el-col :span="10"><TitleData /></el-col>
</el-row>
<el-row type="flex" class="row-bg" justify="space-around" style="margin-top: 30px">
<el-col :span="6"><Result /></el-col>
<el-col :span="6"><ScoreRange /></el-col>
<el-col :span="6"><QuestionType /></el-col>
</el-row>
</app-container>
</template>
<script>
import ExamInfo from './components/ExamInfo.vue'
import Submission from './components/Submission.vue'
import Score from './components/Score.vue'
import ScoreRanking from './components/ScoreRanking.vue'
import TitleData from './components/TitleData.vue'
import Result from './components/Result.vue'
import ScoreRange from './components/ScoreRange.vue'
import QuestionType from './components/QuestionType.vue'
export default {
components: { ExamInfo, Submission, Score, ScoreRanking, TitleData, Result, ScoreRange, QuestionType },
data() {
return {}
}
}
</script>
<style></style>
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
<app-container> <app-container>
<app-list v-bind="tableOptions" ref="list"> <app-list v-bind="tableOptions" ref="list">
<template v-slot:table-name="{ row }"> <template v-slot:table-name="{ row }">
<el-button type="text" @click="toPersonal">{{ row.class_name }}</el-button> <el-button type="text" @click="toPersonal(row)">{{ row.class_name }}</el-button>
</template> </template>
</app-list> </app-list>
</app-container> </app-container>
...@@ -41,9 +41,12 @@ export default { ...@@ -41,9 +41,12 @@ export default {
} }
}, },
methods: { methods: {
toPersonal() { toPersonal(row) {
this.$router.push({ this.$router.push({
path: '/PersonalList' path: '/PersonalList',
query: {
row: row
}
}) })
} }
} }
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
<app-container> <app-container>
<app-list v-bind="tableOptions" ref="list"> <app-list v-bind="tableOptions" ref="list">
<template v-slot:class_name="{ row }"> <template v-slot:class_name="{ row }">
<el-button type="text" @click="toPersonal">{{ row.class_name }}</el-button> <el-button type="text" @click="toPersonal(row)">{{ row.class_name }}</el-button>
</template> </template>
</app-list> </app-list>
</app-container> </app-container>
...@@ -40,9 +40,12 @@ export default { ...@@ -40,9 +40,12 @@ export default {
} }
}, },
methods: { methods: {
toPersonal() { toPersonal(row) {
this.$router.push({ this.$router.push({
path: '/PersonalList' path: '/PersonalList',
query: {
row: row
}
}) })
} }
} }
......
...@@ -45,9 +45,12 @@ export default { ...@@ -45,9 +45,12 @@ export default {
} }
}, },
methods: { methods: {
toExamData() { toExamData(row) {
// this.$router.push({ // this.$router.push({
// path:'' // path: '',
// query: {
// row: row
// }
// }) // })
} }
} }
......
...@@ -40,10 +40,12 @@ export default { ...@@ -40,10 +40,12 @@ export default {
} }
}, },
methods: { methods: {
toPersonal(row) {
toPersonal() {
this.$router.push({ this.$router.push({
path: '/PersonalList' path: '/PersonalList',
query: {
row: row
}
}) })
} }
} }
......
<template>
<el-card class="box-card">
<div slot="header" class="clearfix">
<span>考试信息</span>
</div>
<el-row type="flex" class="row-bg" justify="space-around">
<el-col :span="6"
><div>总分</div>
<div>12313</div></el-col
>
<el-col :span="6"
><div>及格分数</div>
<div>31231</div></el-col
>
<el-col :span="6"
><div>考试总时长</div>
<div>12341</div></el-col
>
</el-row>
</el-card>
</template>
<script>
export default {}
</script>
<style></style>
<template>
<el-card class="box-card">
<div slot="header" class="clearfix">
<span>题型数据</span>
</div>
<el-row type="flex" class="row-bg" justify="space-around">
<el-col :span="6"
><div>总分</div>
<div>12313</div></el-col
>
<el-col :span="6"
><div>及格分数</div>
<div>31231</div></el-col
>
<el-col :span="6"
><div>考试总时长</div>
<div>12341</div></el-col
>
</el-row>
</el-card>
</template>
<script>
export default {}
</script>
<style></style>
<template>
<el-card class="box-card">
<div slot="header" class="clearfix">
<span>结果统计</span>
</div>
<el-row type="flex" class="row-bg" justify="space-around">
<el-col :span="6"
><div>总分</div>
<div>12313</div></el-col
>
<el-col :span="6"
><div>及格分数</div>
<div>31231</div></el-col
>
<el-col :span="6"
><div>考试总时长</div>
<div>12341</div></el-col
>
</el-row>
</el-card>
</template>
<script>
export default {}
</script>
<style></style>
<template>
<el-card class="box-card">
<div slot="header" class="clearfix">
<span>分数统计</span>
</div>
<el-row type="flex" class="row-bg" justify="space-around">
<el-col :span="6"
><div>平均分</div>
<div>12313</div></el-col
>
<el-col :span="6"
><div>最高分</div>
<div>31231</div></el-col
>
<el-col :span="6"
><div>最低分</div>
<div>12341</div></el-col
>
</el-row>
</el-card>
</template>
<script>
export default {}
</script>
<style></style>
<template>
<el-card class="box-card">
<div slot="header" class="clearfix">
<span>考分区间</span>
</div>
<el-row type="flex" class="row-bg" justify="space-around">
<el-col :span="6"
><div>总分</div>
<div>12313</div></el-col
>
<el-col :span="6"
><div>及格分数</div>
<div>31231</div></el-col
>
<el-col :span="6"
><div>考试总时长</div>
<div>12341</div></el-col
>
</el-row>
</el-card>
</template>
<script>
export default {}
</script>
<style></style>
<template>
<el-card>
<app-card>
<h1 class="title" style="font-size: 28px">班级排名</h1>
<el-button type="text" style="font-size: 28px; float: right; margin-top: -40px">导出</el-button>
<el-tabs v-model="tabActive" style="margin-top: 30px">
<el-tab-pane label="已结束" name="baseInfo">
<Finished />
</el-tab-pane>
<el-tab-pane label="待评价" name="contacts" lazy>
<ToEvaluate />
</el-tab-pane>
<el-tab-pane label="未作答" name="project" lazy>
<NoAnswer />
</el-tab-pane>
</el-tabs>
</app-card>
</el-card>
</template>
<script>
import Finished from '../Finished.vue'
import ToEvaluate from '../ToEvaluate.vue'
import NoAnswer from '../NoAnswer.vue'
export default {
components: { Finished, ToEvaluate, NoAnswer },
data() {
return {
tabActive: 'baseInfo'
}
}
}
</script>
<template>
<el-card class="box-card">
<div slot="header" class="clearfix">
<span>交卷统计</span>
</div>
<el-row type="flex" class="row-bg" justify="space-around">
<el-col :span="6"
><div>最早交卷</div>
<div>12313</div></el-col
>
<el-col :span="6"
><div>最迟交卷</div>
<div>31231</div></el-col
>
<el-col :span="6"
><div>平均交卷时长</div>
<div>12341</div></el-col
>
</el-row>
</el-card>
</template>
<script>
export default {}
</script>
<style></style>
<template>
<el-card>
<app-container>
<h1 class="title" style="font-size: 28px">题目数据</h1>
<el-button type="text" style="font-size: 28px; float: right; margin-top: -40px">导出</el-button>
<app-list v-bind="tableOptions" ref="list" style="margin-top: 60px">
<!-- 操作 -->
<template v-slot:table-operate="{ row }">
<el-button type="text" size="mini" @click="toExamData(row)">考试数据</el-button>
<el-button type="text" size="mini" @click="toClassData(row)">班级数据</el-button>
</template>
</app-list>
</app-container>
</el-card>
</template>
<script>
export default {
data() {
return {
conditionList: {
examList: [],
courseList: []
}
}
},
computed: {
// 列表配置
tableOptions() {
return {
remote: {},
columns: [
{ label: '考试名称', prop: 'paper_title', slots: 'table-name' },
{ label: '所属课程', prop: 'class_name', align: 'center' },
{ label: '参考人数', prop: 'cankao_num', align: 'center' },
{ label: '参考率', prop: 'rfert', align: 'center' },
{ label: '平均得分', prop: 'average_num', align: 'center' },
{ label: '最高分', prop: 'top', align: 'center' },
{ label: '最低分', prop: 'low', align: 'center' },
{ label: '题目总数', prop: 'title_num', align: 'center' },
{ label: '及格率', prop: 'title_percent', align: 'center' },
{ label: '操作', slots: 'table-operate', align: 'center' }
],
data: [
{
class_name: 'dsjfks'
}
]
}
}
},
methods: {
toExamData(row) {
this.$router.push({
path: '/examData',
query: {
row: row
}
})
},
// 班级数据
toClassData(row) {
this.$router.push({
path: '/class',
query: {
row: row
}
})
}
}
}
</script>
...@@ -5,7 +5,9 @@ const routes = [ ...@@ -5,7 +5,9 @@ const routes = [
children: [{ path: '/teacher/data/exam', component: () => import('./views/List.vue') }, children: [{ path: '/teacher/data/exam', component: () => import('./views/List.vue') },
{ path: '/class', component: () => import('./components/ClassList.vue') }, { path: '/class', component: () => import('./components/ClassList.vue') },
{ path: '/PersonalList', component: () => import('./components/PersonalList.vue') }, { path: '/PersonalList', component: () => import('./components/PersonalList.vue') },
{ path: '/teacher/data/exam/classDetail', component: () => import('./views/ClassDetail.vue') } { path: '/teacher/data/exam/classDetail', component: () => import('./views/ClassDetail.vue') },
{ path: '/examData', component: () => import('./components/ExamData.vue') }
] ]
} }
] ]
......
...@@ -14,17 +14,40 @@ ...@@ -14,17 +14,40 @@
export default { export default {
data() { data() {
return { return {
conditionList: {
examList: [],
courseList: []
}
} }
}, },
computed: { computed: {
// 列表配置 // 列表配置
tableOptions() { tableOptions() {
return { return {
remote: { remote: {},
},
filters: [ filters: [
{ type: 'select', prop: 'class_name', placeholder: '考试名称', label: '考试名称' }, {
{ type: 'select', prop: 'paper_title', placeholder: '所属课程', label: '所属课程' } type: 'select',
prop: 'class_name',
placeholder: '考试名称',
label: '考试名称',
options: this.conditionList.examList,
labelKey: 'exam_name',
valueKey: 'exam_id',
filterable: true,
remote: true
},
{
type: 'select',
prop: 'course',
placeholder: '所属课程',
label: '所属课程',
options: this.conditionList.courseList,
labelKey: 'course_name',
valueKey: 'course_id',
filterable: true,
remote: true
}
], ],
columns: [ columns: [
{ label: '考试名称', prop: 'paper_title', slots: 'table-name' }, { label: '考试名称', prop: 'paper_title', slots: 'table-name' },
...@@ -47,13 +70,21 @@ export default { ...@@ -47,13 +70,21 @@ export default {
} }
}, },
methods: { methods: {
toExamData () { toExamData(row) {
this.$router.push({
path: '/examData',
query: {
row: row
}
})
}, },
// 班级数据 // 班级数据
toClassData() { toClassData(row) {
this.$router.push({ this.$router.push({
path: '/class' path: '/class',
query: {
row: row
}
}) })
} }
} }
......
...@@ -41,9 +41,12 @@ export default { ...@@ -41,9 +41,12 @@ export default {
} }
}, },
methods: { methods: {
toPersonal() { toPersonal(row) {
this.$router.push({ this.$router.push({
path: '/person' path: '/person',
query: {
row: row
}
}) })
} }
} }
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
<app-container> <app-container>
<app-list v-bind="tableOptions" ref="list"> <app-list v-bind="tableOptions" ref="list">
<template v-slot:class_name="{ row }"> <template v-slot:class_name="{ row }">
<el-button type="text" @click="toPersonal">{{ row.class_name }}</el-button> <el-button type="text" @click="toPersonal(row)">{{ row.class_name }}</el-button>
</template> </template>
</app-list> </app-list>
</app-container> </app-container>
...@@ -40,9 +40,12 @@ export default { ...@@ -40,9 +40,12 @@ export default {
} }
}, },
methods: { methods: {
toPersonal() { toPersonal(row) {
this.$router.push({ this.$router.push({
path: '/PersonalList' path: '/PersonalList',
query: {
row: row
}
}) })
} }
} }
......
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
</template> </template>
<!-- 操作 --> <!-- 操作 -->
<template v-slot:table-operate="{ row }"> <template v-slot:table-operate="{ row }">
<el-button type="text" size="mini">查看</el-button> <el-button type="text" size="mini" @click="toDetail(row)">查看</el-button>
</template> </template>
</app-list> </app-list>
</app-container> </app-container>
...@@ -43,7 +43,14 @@ export default { ...@@ -43,7 +43,14 @@ export default {
} }
}, },
methods: { methods: {
toDetail(row) {
// this.$router.push({
// path:'',
// query:{
// row:row
// }
// })
}
} }
} }
</script> </script>
...@@ -41,9 +41,12 @@ export default { ...@@ -41,9 +41,12 @@ export default {
}, },
methods: { methods: {
toPersonal() { toPersonal(row) {
this.$router.push({ this.$router.push({
path: '/PersonalList' path: '/PersonalList',
query: {
row: row
}
}) })
} }
} }
......
...@@ -48,9 +48,12 @@ export default { ...@@ -48,9 +48,12 @@ export default {
} }
}, },
methods: { methods: {
toClassData() { toClassData(row) {
this.$router.push({ this.$router.push({
path: '/classList' path: '/classList',
query: {
row: row
}
}) })
} }
} }
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论