| | |
| | | <template> |
| | | <div class="app-container"> |
| | | <div style="margin-bottom: 10px;display: flex;align-items: center;justify-content: space-between"> |
| | | <el-button |
| | | type="primary" |
| | | plain |
| | | icon="Plus" |
| | | @click="openDialog()" |
| | | >选择学员</el-button> |
| | | <el-button |
| | | type="danger" |
| | | plain |
| | | icon="Delete" |
| | | @click="handleDeleteBatch" |
| | | >批量删除</el-button> |
| | | <div style="display: flex;justify-content: space-between"> |
| | | <el-form :inline="true" style="display: flex;align-items: center;flex-wrap: wrap;" > |
| | | <el-form-item> |
| | | <el-button |
| | | type="primary" |
| | | plain |
| | | icon="Plus" |
| | | @click="openDialog()" |
| | | >选择学员</el-button> |
| | | </el-form-item> |
| | | <el-form-item label="学生姓名:" > |
| | | <el-input v-model="data.queryParams.studentName" placeholder="请输入学生姓名"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="试卷状态:" > |
| | | <el-select |
| | | v-model="data.queryParams.state" |
| | | class="w100" |
| | | style="max-width: 180px" |
| | | clearable |
| | | size="default" |
| | | > |
| | | <el-option v-for="item in data.completeList" :key="item.id" :label="item.name" :value="item.id"></el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | <el-form-item > |
| | | <el-button |
| | | type="primary" |
| | | @click="getList" |
| | | >查询</el-button> |
| | | <el-button |
| | | type="primary" |
| | | plain |
| | | @click="reset" |
| | | >重置</el-button> |
| | | </el-form-item> |
| | | </el-form> |
| | | <div> |
| | | <el-button |
| | | type="danger" |
| | | plain |
| | | icon="Delete" |
| | | @click="handleDeleteBatch" |
| | | >批量删除</el-button> |
| | | <el-button |
| | | type="primary" |
| | | plain |
| | | @click="back" |
| | | >返回</el-button> |
| | | </div> |
| | | |
| | | </div> |
| | | <!-- 表格数据 --> |
| | | <el-table ref="tableRef" v-loading="loading" :data="dataList" :border="true" :row-key="getRowKey" @selection-change="handleSelectionChange"> |
| | |
| | | <span>{{scope.row.student.phone}}</span> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column label="成绩" prop="score" align="center" /> |
| | | <el-table-column label="试卷状态" prop="state" align="center" > |
| | | <template #default="scope"> |
| | | <span>{{scope.row.state ===0 ? '待考试' : scope.row.state ===1 ? '待批阅':'批阅完成'}}</span> |
| | | </template> |
| | | </el-table-column> |
| | | <!-- <el-table-column label="考试是否完成" prop="completed" align="center" >--> |
| | | <!-- <template #default="scope">--> |
| | | <!-- <span>{{scope.row.completed ===0 ? '未完成' : '已完成'}}</span>--> |
| | | <!-- </template>--> |
| | | <!-- </el-table-column>--> |
| | | <el-table-column label="成绩" prop="score" align="center" > |
| | | <template #default="scope"> |
| | | <span>{{scope.row.state ===0 ? '--' : scope.row.score}}</span> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column label="是否合格" prop="passed" align="center" > |
| | | <template #default="scope"> |
| | | <span>{{scope.row.passed === 0 ? '不合格' : '合格'}}</span> |
| | | <span>{{scope.row.state ===0 ? '--' : scope.row.passed === 0 ? '不合格' : '合格'}}</span> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column label="操作" align="center" class-name="small-padding fixed-width" width="180"> |
| | | <template #default="scope"> |
| | | <el-button link type="primary" @click="correct(scope.row)" v-if="scope.row.state != 0">批阅</el-button> |
| | | <el-button link type="danger" @click="handleDelete(scope.row)">删除</el-button> |
| | | </template> |
| | | </el-table-column> |
| | |
| | | import Cookies from "js-cookie"; |
| | | import {delQuestionBank, getQuestionBank} from "@/api/onlineEducation/questionBank"; |
| | | import {batchDelStudent, delBatchStu, getBatchStudent} from "@/api/onlineEducation/batch"; |
| | | import {useRoute} from 'vue-router' |
| | | import {useRoute, useRouter} from 'vue-router' |
| | | import {delExamStu, examDelStudent, getExamStudent} from "@/api/onlineEducation/exam"; |
| | | import ExamChooseStudent from "@/views/onlineEducation/groupExams/components/examChooseStudent.vue"; |
| | | const route = useRoute() |
| | | |
| | | const router = useRouter(); |
| | | |
| | | const { proxy } = getCurrentInstance(); |
| | | const loading = ref(false); |
| | |
| | | const data = reactive({ |
| | | queryParams: { |
| | | paperId: null, |
| | | studentName: '', |
| | | state: null, |
| | | pageNum: 1, |
| | | pageSize: 10, |
| | | }, |
| | | total: 0, |
| | | dataList: [], |
| | | isAdmin: false, |
| | | chooseStu: [] |
| | | chooseStu: [], |
| | | completeList: [ |
| | | { |
| | | id: 0, |
| | | name: '待考试' |
| | | }, |
| | | { |
| | | id: 1, |
| | | name: '待批阅' |
| | | }, |
| | | { |
| | | id: 2, |
| | | name: '批阅完成' |
| | | }, |
| | | ] |
| | | |
| | | }); |
| | | |
| | | const { queryParams, total, dataList } = toRefs(data); |
| | | |
| | | const backValue = ref() |
| | | onMounted(async ()=>{ |
| | | |
| | | if(route.query.val){ |
| | | const val = JSON.parse(route.query.val) |
| | | if(val.type == 'index'){ |
| | | data.queryParams.pageNum = val.pageNum; |
| | | data.queryParams.pageSize = val.pageSize; |
| | | data.queryParams.paperId = val.id |
| | | }else { |
| | | data.queryParams.paperId = val.paperId |
| | | data.queryParams.pageNum = val.pageNum; |
| | | data.queryParams.pageSize = val.pageSize; |
| | | } |
| | | } |
| | | const userInfo = JSON.parse(Cookies.get('userInfo')) |
| | | console.log("userInfo",userInfo) |
| | | if(userInfo.userType === 0){ |
| | |
| | | }else { |
| | | data.isAdmin = false; |
| | | } |
| | | const val = JSON.parse(route.query.val) |
| | | // data.queryParams.pageId = val.id |
| | | data.queryParams.paperId = val.id |
| | | await getList() |
| | | }) |
| | | onUnmounted(()=>{ |
| | |
| | | |
| | | const getRowKey = (row) => { |
| | | return row.id |
| | | } |
| | | |
| | | const back = () => { |
| | | // router.push("/group"); |
| | | |
| | | const obj = { |
| | | |
| | | pageNum: data.queryParams.pageNum, |
| | | pageSize: data.queryParams.pageSize, |
| | | } |
| | | const v = JSON.stringify(obj) |
| | | router.push({ path: "/group", query: { val: v } }); |
| | | } |
| | | const getList = async () => { |
| | | loading.value = true |
| | |
| | | |
| | | /** 重置新增的表单以及其他数据 */ |
| | | function reset() { |
| | | proxy.resetForm("roleRef"); |
| | | data.queryParams = { |
| | | paperId: data.queryParams.paperId, |
| | | studentName: '', |
| | | state: null, |
| | | pageNum: 1, |
| | | pageSize: 10, |
| | | } |
| | | getList() |
| | | } |
| | | const handleSelectionChange = (val) => { |
| | | |
| | | console.log("选中的行", val) |
| | | data.chooseStu = val.map(item => item.id) |
| | | } |
| | | |
| | | const correct = (val) => { |
| | | const obj = { |
| | | id: val.id, |
| | | paperId: data.queryParams.paperId, |
| | | pageNum: data.queryParams.pageNum, |
| | | pageSize: data.queryParams.pageSize, |
| | | state: val.state |
| | | } |
| | | const v = JSON.stringify(obj) |
| | | router.push({ path: "/correctExam", query: { val: v } }); |
| | | } |
| | | const handleDelete = (val) => { |
| | | ElMessageBox.confirm( |
| | | '确定删除此条数据?', |