|
@@ -0,0 +1,232 @@
|
|
|
+<template>
|
|
|
+ <NavHeader/>
|
|
|
+ <bread-crumb/>
|
|
|
+ <div class="w-1200px m-auto">
|
|
|
+ <div class="relative -mt-40px flex justify-end">
|
|
|
+ <button type="button" class="back-btn" @click="linkTo('process')">返回</button>
|
|
|
+ </div>
|
|
|
+ <div class="mt-10px w-full bg-hex-fff py-20px px-15px">
|
|
|
+ <div class="flex items-center">
|
|
|
+ <el-select v-model="sm_id" placeholder="全部学校" size="large" @change="filterData">
|
|
|
+ <el-option label="全部" value=""
|
|
|
+ />
|
|
|
+ <el-option
|
|
|
+ v-for="item in school_list"
|
|
|
+ :key="item.sm_id"
|
|
|
+ :label="item.sm_name"
|
|
|
+ :value="item.sm_id"
|
|
|
+ />
|
|
|
+ </el-select>
|
|
|
+ <el-select class="ml-20px" v-model="ykg_id" placeholder="全部考场" size="large" @change="filterData">
|
|
|
+ <el-option label="全部" value=""
|
|
|
+ />
|
|
|
+ <el-option
|
|
|
+ v-for="item in room_list"
|
|
|
+ :key="item.ykg_id"
|
|
|
+ :label="item.ykg_name"
|
|
|
+ :value="item.ykg_id"
|
|
|
+ />
|
|
|
+ </el-select>
|
|
|
+ <el-select class="ml-20px" v-model="cm_id" placeholder="全部班级" size="large" @change="filterData">
|
|
|
+ <el-option label="全部" value=""
|
|
|
+ />
|
|
|
+ <el-option
|
|
|
+ v-for="item in classes_list"
|
|
|
+ :key="item.cm_id"
|
|
|
+ :label="item.cm_name"
|
|
|
+ :value="item.cm_id"
|
|
|
+ />
|
|
|
+ </el-select>
|
|
|
+ <el-input
|
|
|
+ v-model="keyword"
|
|
|
+ class="ml-20px"
|
|
|
+ style="width: 200px;"
|
|
|
+ size="large"
|
|
|
+ @keyup.enter="filterData"
|
|
|
+ @clear="filterData"
|
|
|
+ clearable
|
|
|
+ placeholder="请输入关键字"
|
|
|
+ />
|
|
|
+ <el-button color="#003eee" class="ml-20px" type="primary" size="large" @click="filterData">搜索</el-button>
|
|
|
+ </div>
|
|
|
+ <div v-if="tableData.length > 0">
|
|
|
+ <table class="mt-20px data-table" cellpadding="0" cellspacing="0">
|
|
|
+ <tr>
|
|
|
+ <th>学校</th>
|
|
|
+ <th>考场</th>
|
|
|
+ <th>姓名</th>
|
|
|
+ <th>班级</th>
|
|
|
+ <th>扫描情况</th>
|
|
|
+ </tr>
|
|
|
+ <tr v-for="item in tableData">
|
|
|
+ <td>{{ item.sm_name }}</td>
|
|
|
+ <td>{{ item.ykg_name }}</td>
|
|
|
+ <td>{{ item.user_realname }}</td>
|
|
|
+ <td>{{ item.cm_name }}</td>
|
|
|
+ <td>
|
|
|
+ <span :class="item.statue === '0'?'text-hex-ff0000':''">{{ item.statue_title }}</span>
|
|
|
+ </td>
|
|
|
+ </tr>
|
|
|
+ </table>
|
|
|
+ <div class="mt-20px page-new flex justify-end">
|
|
|
+ <el-pagination v-model:current-page="cur_page" v-model:page-size="limit" layout="total,prev, pager, next"
|
|
|
+ :total="total" :background="true" @current-change="handleSelectionChange"></el-pagination>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div v-else class="no-data">
|
|
|
+ <div>
|
|
|
+ <h3 class="no-data-img"></h3>
|
|
|
+ <h4 class="mt-25px text-18px text-hex-0048e5 text-center">暂无数据</h4>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <commonFooter/>
|
|
|
+</template>
|
|
|
+<route lang="json">
|
|
|
+{
|
|
|
+"meta":{
|
|
|
+"title":"试卷扫描情况",
|
|
|
+"breadcrumb":true
|
|
|
+}
|
|
|
+}
|
|
|
+</route>
|
|
|
+<script setup>
|
|
|
+import {scan_list, school, ykg, cm} from "~/pages/process/paper-scan/api";
|
|
|
+import {useRouter} from "vue-router";
|
|
|
+
|
|
|
+const router = useRouter();
|
|
|
+const route = useRoute();
|
|
|
+const linkTo = () => {
|
|
|
+ window.location.href = window.GLOBAL_CONFIG.web_pc + '/webapps/page/marking-answer-sheet-liankao.html?ze_id=1018'
|
|
|
+};
|
|
|
+let sm_id = $ref('');
|
|
|
+let ykg_id = $ref('');
|
|
|
+let cm_id = $ref('');
|
|
|
+let school_list = $ref([]);
|
|
|
+let room_list = $ref([]);
|
|
|
+let classes_list = $ref([]);
|
|
|
+let keyword = $ref('');
|
|
|
+let tableData = $ref([]);
|
|
|
+let limit = $ref(10);
|
|
|
+let total = $ref(0);
|
|
|
+let cur_page = $ref(1);
|
|
|
+let ze_id = $ref('')
|
|
|
+
|
|
|
+function getSchool() {
|
|
|
+ let data = {
|
|
|
+ ze_id: ze_id
|
|
|
+ };
|
|
|
+ school(data).then(res => {
|
|
|
+ if (res.code === '1') {
|
|
|
+ school_list = res.data.list;
|
|
|
+ }
|
|
|
+ })
|
|
|
+}
|
|
|
+
|
|
|
+function getYkg() {
|
|
|
+ let data = {
|
|
|
+ ze_id: ze_id
|
|
|
+ };
|
|
|
+ ykg(data).then(res => {
|
|
|
+ if (res.code === '1') {
|
|
|
+ room_list = res.data.list;
|
|
|
+ }
|
|
|
+ })
|
|
|
+}
|
|
|
+
|
|
|
+function getCm() {
|
|
|
+ let data = {
|
|
|
+ ze_id: ze_id
|
|
|
+ };
|
|
|
+ cm(data).then(res => {
|
|
|
+ if (res.code === '1') {
|
|
|
+ classes_list = res.data.list;
|
|
|
+ }
|
|
|
+ })
|
|
|
+}
|
|
|
+
|
|
|
+function getListData() {
|
|
|
+ let data = {
|
|
|
+ ze_id: ze_id,
|
|
|
+ ykg_id: ykg_id,
|
|
|
+ sm_id: sm_id,
|
|
|
+ cm_id: cm_id,
|
|
|
+ keyword: keyword,
|
|
|
+ page: cur_page,
|
|
|
+ limit: limit,
|
|
|
+ };
|
|
|
+ scan_list(data).then(res => {
|
|
|
+ if (res.code === '1') {
|
|
|
+ tableData = res.data.page_data;
|
|
|
+ total = Number(res.data.total_rows);
|
|
|
+ cur_page = Number(res.data.page_now);
|
|
|
+ }
|
|
|
+ })
|
|
|
+}
|
|
|
+
|
|
|
+if (route.params.id) {
|
|
|
+ ze_id = route.params.id;
|
|
|
+ getListData();
|
|
|
+ getSchool();
|
|
|
+ getYkg();
|
|
|
+ getCm();
|
|
|
+}
|
|
|
+const handleSelectionChange = (val) => {
|
|
|
+ cur_page = val;
|
|
|
+ getListData();
|
|
|
+};
|
|
|
+
|
|
|
+function filterData() {
|
|
|
+ cur_page = 1;
|
|
|
+ getListData();
|
|
|
+}
|
|
|
+</script>
|
|
|
+
|
|
|
+<style lang="scss" scoped>
|
|
|
+$color: #0048e5;
|
|
|
+::v-deep .el-pagination.is-background .btn-next.is-active,
|
|
|
+::v-deep .el-pagination.is-background .btn-prev.is-active,
|
|
|
+::v-deep .el-pagination.is-background .el-pager li.is-active {
|
|
|
+ background-color: $color;
|
|
|
+}
|
|
|
+
|
|
|
+.data-table {
|
|
|
+ width: 100%;
|
|
|
+ table-layout: fixed;
|
|
|
+
|
|
|
+ tr:nth-child(even) {
|
|
|
+ background: #F1F7FF;
|
|
|
+ }
|
|
|
+
|
|
|
+ th {
|
|
|
+ height: 74px;
|
|
|
+ background: $color;
|
|
|
+ font-weight: normal;
|
|
|
+ text-align: center;
|
|
|
+ font-size: 16px;
|
|
|
+ color: #fff;
|
|
|
+ }
|
|
|
+
|
|
|
+ td {
|
|
|
+ padding: 15px 0;
|
|
|
+ font-size: 16px;
|
|
|
+ color: #474747;
|
|
|
+ text-align: center;
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+.no-data {
|
|
|
+ width: 100%;
|
|
|
+ height: 450px;
|
|
|
+ display: flex;
|
|
|
+ justify-content: center;
|
|
|
+ align-items: center;
|
|
|
+
|
|
|
+ .no-data-img {
|
|
|
+ width: 233px;
|
|
|
+ height: 199px;
|
|
|
+ background: url("/images/no-data.png") center no-repeat;
|
|
|
+ }
|
|
|
+}
|
|
|
+</style>
|