From 110682b80a5de00394ebef0ee66ef7ab73c6b5e3 Mon Sep 17 00:00:00 2001
From: Administrator <admin>
Date: Thu, 20 Jan 2022 20:58:03 +0800
Subject: [PATCH] 考试统计查询修改,成绩查询修改,成绩修改调整

---
 src/views/trainExam/examStatistics.vue |  592 ++++++++++++++++++++++------------------------------------
 1 files changed, 229 insertions(+), 363 deletions(-)

diff --git a/src/views/trainExam/examStatistics.vue b/src/views/trainExam/examStatistics.vue
index 672e33f..699e511 100644
--- a/src/views/trainExam/examStatistics.vue
+++ b/src/views/trainExam/examStatistics.vue
@@ -32,8 +32,9 @@
             @row-save="questionBankRowSave"
             @row-update="questionBankRowUpdate"
             @row-del="questionBankRowDel"
+            @row-click="handleRowClick"
           >
-            <template slot-scope="{ row }" slot="auditStatus">
+            <!-- <template slot-scope="{ row }" slot="auditStatus">
               <el-tag class="dtype">
                 {{
                   row.auditStatus == 1
@@ -46,12 +47,12 @@
                 <i class="yj" v-if="row.auditStatus == 2"></i>
                 <i class="gz" v-if="row.auditStatus == 3"></i>
               </el-tag>
-            </template>
+            </template> -->
             <template slot="menuLeft">
               <!--图例 components-->
-              <span>
+              <!-- <span>
                 <Legend :datas="datalistLIU"></Legend>
-              </span>
+              </span> -->
             </template>
 
             <template slot-scope="{ row }" slot="menu">
@@ -61,34 +62,59 @@
                 icon="el-icon-collection"
                 class="start-kaoshi"
                 v-if="permission.trainExam_trainPapers"
-                @click="startExam(row)"
-                >报名清册
-              </el-button>
-              <el-button
-                type="text"
-                size="mini"
-                icon="el-icon-search"
-                v-if="permission.trainExam_index_examScoreViews"
-                @click="examScoreViews(row)"
-                >成绩查看
+                @click="getExamDetail(row)"
+                >详情
               </el-button>
             </template>
           </avue-crud>
         </div>
       </el-card>
     </el-col>
+    <el-drawer
+      :title="title"
+      :visible.sync="dialog"
+      :modal="true"
+      :modal-append-to-body="true"
+      :append-to-body="true"
+      direction="rtl"
+      size="60%">
+      <avue-crud
+            v-model="formDetail"
+            :option="option"
+            v-if="dialog"
+            :search.sync="search"
+            :table-loading="loading"
+            :data="data"
+            ref="crud"
+            :page.sync="page"
+            @on-load="onLoad"
+            :before-open="beforeOpen"
+            @selection-change="selectionChange"
+            @search-change="searchChange"
+            @search-reset="searchReset"
+            @current-change="currentChange"
+            @size-change="sizeChange"
+            
+          >
+            <template slot-scope="{ row }" slot="menu">
+              <el-button
+                type="text"
+                size="mini"
+                icon="el-icon-collection"
+                class="start-kaoshi"
+                v-if="permission.trainExam_trainPapers"
+                @click="getExamDetail(row)"
+                >详情
+              </el-button>
+            </template>
+          </avue-crud>
+    </el-drawer>
   </el-row>
+  
 </template>
 
 <script>
-import {
-  getList,
-  add,
-  remove,
-  update,
-  updateAudit,
-  applyConfirm,
-} from "@/api/examapi/examination";
+import {getExamStatistics,getExamInfoByExamId} from "@/api/examapi/examination";
 import { mapGetters } from "vuex";
 import Legend from "@/components/liu-legend/Legend";
 export default {
@@ -97,26 +123,16 @@
   },
   data() {
     return {
+      startTime:"",
+      title:"",
+      trainUnitId:null,
+      dialog: false,
       form: {},
-      //legend-liu数据
-      datalistLIU: [
-        {
-          color: "#29C093",
-          text: "审核通过",
-        },
-        {
-          color: "#F34A4A",
-          text: "审核不通过",
-        },
-        {
-          color: "#F48F57",
-          text: "待审核",
-        },
-      ],
+      formDetail: {},
       questionBankOption: {
         // 操作栏多余按钮去除
         delBtn: false,
-        editBtn: true,
+        editBtn: false,
         addBtn: false,
         menu: true,
         // 导出按钮
@@ -133,32 +149,19 @@
         indexLabel: "序号",
         dialogClickModal: false,
         // 操作栏宽度
-        menuWidth: 320,
+        menuWidth: 120,
         labelWidth: 140,
         ...this.$store.state.control.clearOtherBut,
         column: [
           {
             label: "培训学校名称",
-            prop: "deptName",
+            prop: "schoolName",
             slot: true,
             search:true,
             searchSpan:5,
             searchLabelWidth:110,
-            // 表单新增时是否禁止
-            addDisabled: true,
-            // 表单新增时是否可见
-            addDisplay: false,
-            // 表单新增时是否为查看模式
-            addDetail: false,
-            // 表单编辑时是否禁止
-            editDisabled: true,
-            // 表单编辑时是否可见
-            editDisplay: false,
-            // 表单编辑时是否为查看模式
-            editDetail: false,
-            // hide: true,
-            display: false,
             overHidden: true,
+            // width:180,
           },
           {
             label: "考试时间",
@@ -169,18 +172,6 @@
             search:true,
             searchSpan:4,
             hide: true,
-            // 表单新增时是否禁止
-            addDisabled: false,
-            // 表单新增时是否可见
-            addDisplay: true,
-            // 表单新增时是否为查看模式
-            addDetail: false,
-            // 表单编辑时是否禁止
-            editDisabled: false,
-            // 表单编辑时是否可见
-            editDisplay: false,
-            // 表单编辑时是否为查看模式
-            editDetail: false,
             rules: [
               {
                 required: true,
@@ -193,155 +184,144 @@
             label: "考试时间",
             prop: "startTime",
             type: "datetime",
-            format: "yyyy-MM-dd HH:mm",
-            valueFormat: "yyyy-MM-dd HH:mm",
-            hide: true,
-            // 表单新增时是否禁止
-            addDisabled: false,
-            // 表单新增时是否可见
-            addDisplay: true,
-            // 表单新增时是否为查看模式
-            addDetail: false,
-            // 表单编辑时是否禁止
-            editDisabled: false,
-            // 表单编辑时是否可见
-            editDisplay: true,
-            // 表单编辑时是否为查看模式
-            editDetail: false,
-            rules: [
-              {
-                required: true,
-                message: "请选择考试时间",
-                trigger: "blur",
-              },
-            ],
-          },
-          {
-            label: "考试开始时间",
-            prop: "startTime",
-            type: "datetime",
-            format: "yyyy-MM-dd HH:mm",
-            valueFormat: "yyyy-MM-dd HH:mm",
-            // 表单新增时是否禁止
-            addDisabled: false,
-            // 表单新增时是否可见
-            addDisplay: false,
-            // 表单新增时是否为查看模式
-            addDetail: false,
-            // 表单编辑时是否禁止
-            editDisabled: false,
-            // 表单编辑时是否可见
-            editDisplay: false,
-            // 表单编辑时是否为查看模式
-            editDetail: false,
-            width: 120,
-          },
-          {
-            label: "考试开始截止时间",
-            prop: "endTime",
-            type: "datetime",
-            // span: 24,
-            format: "yyyy-MM-dd HH:mm",
-            valueFormat: "yyyy-MM-dd HH:mm",
-            // 表单新增时是否禁止
-            addDisabled: false,
-            // 表单新增时是否可见
-            addDisplay: false,
-            // 表单新增时是否为查看模式
-            addDetail: false,
-            // 表单编辑时是否禁止
-            editDisabled: false,
-            // 表单编辑时是否可见
-            editDisplay: true,
-            // 表单编辑时是否为查看模式
-            editDetail: false,
-            width: 120,
+            format: "yyyy-MM-dd",
+            valueFormat: "yyyy-MM-dd",
           },
           {
             label: "报名人数",
-            prop: "num",
-            type: "textarea",
-            span: 24,
-            slot: true,
-            // 表单新增时是否禁止
-            addDisabled: false,
-            // 表单新增时是否可见
-            addDisplay: true,
-            // 表单新增时是否为查看模式
-            addDetail: false,
-            // 表单编辑时是否禁止
-            editDisabled: false,
-            // 表单编辑时是否可见
-            editDisplay: false,
-            // 表单编辑时是否为查看模式
-            editDetail: false,
-            width: 70,
+            prop: "znum",
           },
           {
-            label: "考试人数",
-            prop: "examNum",
-            type: "textarea",
-            span: 24,
-            slot: true,
-            // 表单新增时是否禁止
-            addDisabled: false,
-            // 表单新增时是否可见
-            addDisplay: true,
-            // 表单新增时是否为查看模式
-            addDetail: false,
-            // 表单编辑时是否禁止
-            editDisabled: false,
-            // 表单编辑时是否可见
-            editDisplay: false,
-            // 表单编辑时是否为查看模式
-            editDetail: false,
-            width: 70,
+            label: "机考人数",
+            prop: "yknum",
           },
           {
-            label: "审核状态",
-            search: true,
-            searchSpan: 4,
-            prop: "auditStatus",
-            slot: true,
-            editDisplay: false,
-            addDisplay: false,
-            type: "select",
-            rules: [
-              {
-                required: true,
-                message: "请选择审核类型",
-                trigger: "blur",
-              },
-            ],
-            dicData: [
-              {
-                label: "审核通过",
-                value: 1,
-              },
-              {
-                label: "不通过",
-                value: 2,
-              },
-              {
-                label: "待审核",
-                value: 3,
-              },
-            ],
-            width: 110,
+            label: "纸质考试人数",
+            prop: "zznum",
+          },
+          {
+            label: "缺考人数",
+            prop: "qknum",
+          },
+          {
+            label: "审查异常人数",
+            prop: "ycnum",
+          },
+          {
+            label: "已取消考试人数",
+            prop: "qxnum",
           },
         ],
       },
+      option: {
+        // 操作栏多余按钮去除
+        delBtn: false,
+        editBtn: false,
+        addBtn: false,
+        menu: false,
+        //合计
+        showSummary: true,
+        viewBtn: false,
+        align: "center",
+        height: "auto",
+        calcHeight: 80,
+        tip: false,
+        searchMenuSpan: 4,
+        index: true,
+        indexLabel: "序号",
+        ...this.$store.state.control.clearOtherBut,
+        column: [
+          {
+            label: "企业名称",
+            prop: "deptName",
+            slot: true,
+            // search:true,
+            // searchSpan:5,
+            searchLabelWidth:110,
+            overHidden: true,
+          },
+          {
+            label: "报名人数",
+            prop: "znum",
+          },
+          {
+            label: "审查异常人数",
+            prop: "ycnum",
+          },
+          {
+            label: "缺考/纸质考试人数",
+            prop: "qknum",
+          },
+          {
+            label: "缺考/纸质占比(%)",
+            prop: "absentProportion",
+          },
+          {
+            label: "及格人数",
+            prop: "yknum",
+          },
+          {
+            label: "及格人数占比(%)",
+            prop: "qualifiedProportion",
+          },
+        ],
+        sumColumnList: [
+            {
+              label:'合计:',
+              name: 'deptName',
+            },
+            {
+              name: 'znum',
+              type: 'sum'
+            },
+            {
+              name: 'ycnum',
+              type: 'sum'
+            },
+            {
+              name: 'qknum',
+              type: 'sum'
+            },
+            {
+              name: 'absentProportion',
+              type: 'avg'
+            },
+            {
+              name: 'yknum',
+              type: 'sum'
+            },
+            {
+              name: 'qualifiedProportion',
+              type: 'avg'
+            },
+            {
+              name: 'znum',
+              type: 'sum'
+            },
+          ],
+      },
       questionBankSearch: {},
+      search: {},
       questionBankLoading: true,
+      loading: true,
       questionBankData: [],
+      data: [],
       questionBankPage: {
         pageSize: 10,
         currentPage: 1,
         total: 16,
         ...this.$store.state.control.changePageSize,
       },
+      page: {
+        pageSize: 10,
+        currentPage: 1,
+        total: 16,
+        ...this.$store.state.control.changePageSize,
+      },
       questionBankQuery: {},
+      query: {},
       questionBankSelectionList: [],
+      selectionList: [],
     };
   },
   mounted() {},
@@ -357,7 +337,7 @@
     permissionList() {
       return {
         addBtn: this.vaildData(null, false),
-        viewBtn: this.vaildData(this.permission.trainExam_edit, false),
+        viewBtn: this.vaildData(null, false),
         delBtn: this.vaildData(null, false),
         editBtn: this.vaildData(null, false),
       };
@@ -365,14 +345,28 @@
   },
   watch: {},
   methods: {
+    //合计
+    summaryMethod({ columns, data }){
+      const sums = [];
+      if (columns.length > 0) {
+        columns.forEach((column, index) => {
+          if ([0,1,6].includes(index) ) {
+            sums[index] = '-'
+          } else {
+            let values = this.selectList.map(item => Number(item[column.property]));
+            sums[index] = values;
+          }
+        });
+      }
+      return sums;
+    },
     questionBankOnLoad(page, params = {}) {
       this.questionBankLoading = false;
-      params["examType"] = 2;
       //如果是培训公司管理员,则只能看到当前培训公司申请的考试
       if (this.userInfo.role_name == "培训公司管理员") {
         params["deptId"] = this.userInfo.dept_id;
       }
-      getList(
+      getExamStatistics(
         page.currentPage,
         page.pageSize,
         Object.assign(params, this.questionBankQuery)
@@ -384,9 +378,33 @@
         this.questionBankSelectionClear();
       });
     },
+    onLoad(page, params = {}) {
+      this.loading = false;
+      //如果是培训公司管理员,则只能看到当前培训公司申请的考试
+      if (this.userInfo.role_name == "培训公司管理员") {
+        params["deptId"] = this.userInfo.dept_id;
+      }
+      params['startTime'] = this.startTime;
+      params['trainUnitId'] = this.trainUnitId;
+      getExamInfoByExamId(
+        page.currentPage,
+        page.pageSize,
+        Object.assign(params, this.query)
+      ).then((res) => {
+        const data = res.data.data;
+        this.page.total = data.total;
+        this.data = data.records;
+        this.loading = false;
+        this.selectionClear();
+      });
+    },
     questionBankSelectionClear() {
       this.questionBankSelectionList = [];
       this.$refs.questionBankCrud.toggleSelection();
+    },
+    selectionClear() {
+      this.selectionList = [];
+      this.$refs.crud.toggleSelection();
     },
     questionBankSelectionChange(list) {
       this.questionBankSelectionList = list;
@@ -407,173 +425,21 @@
     questionBankSizeChange(pageSize) {
       this.questionBankPage.pageSize = pageSize;
     },
-    //审核
-    submit(row, done, loading) {
-      updateAudit(row).then(
-        () => {
-          this.dialogFormVisible = false;
-          this.questionBankOnLoad(this.questionBankPage);
-          this.$message({
-            type: "success",
-            message: "操作成功!",
-          });
-          done();
-        },
-        (error) => {
-          window.console.log(error);
-          loading();
-        }
-      );
+    //详情弹窗
+    getExamDetail(row) {
+      this.dialog = true;
+      this.trainUnitId = row.trainUnitId;
+      this.startTime = row.startTime;
+      this.title = row.schoolName+row.startTime+"考试明细";
+      this.onLoad(this.page);
     },
-     beforeOpen(done, type) {
-      if(this.userInfo.role_name=="培训公司管理员"){
-         if (["edit"].includes(type)) {
-            if(this.form.auditStatus==1){
-              this.$message({
-                type: "warning",
-                message: "当前考试申请已审核通过,无法再修改考试申请信息!",
-              });
-              return;
-            }
-          }
-      }
-      done();
-    },
-    startExam(row) {
-      //正式考试
-      if (row.examType == 1) {
-        this.$router.push({
-          path: `/applydetailed`,
-          query: row,
-        });
-      }
-
-      //模拟考试
-      if (row.examType == 2) {
-        this.$router.push({
-          path: `/trainApply`,
-          query: row,
-        });
-      }
-    },
-    examScoreViews(row) {
-      //模拟考试
-      if (row.examType == 2) {
-        this.$router.push({
-          path: `/trainExam/singleperformance`,
-          query: row,
-        });
-      }
-    },
-    // 新增
-    questionBankRowSave(row, done, loading) {
-      row.startTime = row.startTime + ":00";
-      row["examType"] = 2;
-      // row.endTime = row.examTime[1];
-      // row.examTime = JSON.stringify(row.examTime);
-      add(row).then(
-        () => {
-          this.questionBankOnLoad(this.questionBankPage);
-          this.$message({
-            type: "success",
-            message: "操作成功!",
-          });
-          done();
-        },
-        (error) => {
-          window.console.log(error);
-          loading();
-        }
-      );
-    },
-    questionBankRowUpdate(row, index, done, loading) {
-      // if (Array.isArray(row.examTime) != true) {
-      //   row.examTime = row.examTime.split(",");
-      // }
-      const data = {
-        id: row.id,
-        startTime: row.startTime + ":00",
-        endTime: row.endTime + ":00",
-      };
-      // row.startTime = row.startTime + ":00";
-      // row.endTime = row.endTime + ":00";
-      // row.endTime = row.examTime[1];
-      // row.examTime = JSON.stringify(row.examTime);
-      update(data).then(
-        () => {
-          this.questionBankOnLoad(this.questionBankPage);
-          this.$message({
-            type: "success",
-            message: "操作成功!",
-          });
-          done();
-        },
-        (error) => {
-          window.console.log(error);
-          loading();
-        }
-      );
-    },
-    questionBankRowDel(row) {
-      this.$confirm("确定将选择数据删除?", {
-        confirmButtonText: "确定",
-        cancelButtonText: "取消",
-        type: "warning",
-      })
-        .then(() => {
-          return remove(row.id);
-        })
-        .then(() => {
-          this.questionBankOnLoad(this.questionBankPage);
-          this.$message({
-            type: "success",
-            message: "操作成功!",
-          });
-        });
-    },
-    handleConfirm(row) {
-      this.$confirm("已确认当前考试申请人员名单无误?", {
-        confirmButtonText: "确定",
-        cancelButtonText: "取消",
-        type: "warning",
-      })
-        .then(() => {
-          row["confirmUser"] = this.userInfo.Id;
-          return applyConfirm(row);
-        })
-        .then(() => {
-          this.questionBankOnLoad(this.questionBankPage);
-          this.$message({
-            type: "success",
-            message: "操作成功!",
-          });
-        });
-    },
-    questionBankHandleDelete() {
-      if (this.questionBankSelectionList.length === 0) {
-        this.$message.warning("请选择至少一条数据");
-        return;
-      }
-      this.$confirm("确定将选择数据删除?", {
-        confirmButtonText: "确定",
-        cancelButtonText: "取消",
-        type: "warning",
-      })
-        .then(() => {
-          return remove(this.ids);
-        })
-        .then(() => {
-          this.questionBankOnLoad(this.questionBankPage);
-          this.$message({
-            type: "success",
-            message: "操作成功!",
-          });
-          this.$refs.questionBankCrud.toggleSelection();
-        });
-    },
-    handleAudit(row) {
-      this.dialogFormVisible = true;
-      this.Audit = row;
+    //行单击详情弹窗
+    handleRowClick(row) {
+      this.dialog = true;
+      this.trainUnitId = row.trainUnitId;
+      this.startTime = row.startTime;
+      this.title = row.schoolName+row.startTime+"考试明细";
+      this.onLoad(this.page);
     },
   },
 };

--
Gitblit v1.9.3