From 21c7375b7b38ebf2c8a2ca8fbf6fe9fb4f28250f Mon Sep 17 00:00:00 2001
From: Administrator <admin>
Date: Wed, 12 Jan 2022 10:59:40 +0800
Subject: [PATCH] 新增公司注册机公司注册审核
---
src/views/trainExam/performance.vue | 559 +++++++++++++++++++++++++++++++++++++++++++++++++++----
1 files changed, 518 insertions(+), 41 deletions(-)
diff --git a/src/views/trainExam/performance.vue b/src/views/trainExam/performance.vue
index c4fc148..abdbd72 100644
--- a/src/views/trainExam/performance.vue
+++ b/src/views/trainExam/performance.vue
@@ -2,14 +2,19 @@
* @Author: Morpheus
* @Date: 2021-07-05 16:31:54
* @Last Modified by: liu
- * @Last Modified time: 2021-10-26 15:44:52
+ * @Last Modified time: 2021-11-27 10:20:19
* menu-name 成绩管理
*/
<template>
<el-row class="morpheus-box">
- <el-col :span="24" class="recruitmentManagement">
+ <el-col :span="24">
<el-card>
- <div class="exam-card-body">
+ <div
+ :class="[
+ 'exam-card-body',
+ $store.state.control.windowWidth >= 1024 ? 'tooRowSearch' : '',
+ ]"
+ >
<avue-crud
v-model="obj"
class="company-box"
@@ -20,6 +25,7 @@
:permission="permissionList"
ref="questionBankCrud"
:page.sync="questionBankPage"
+ @sort-change="sortChange"
@on-load="questionBankOnLoad"
@selection-change="questionBankSelectionChange"
@search-change="questionBankSearchChange"
@@ -30,17 +36,17 @@
@refresh-change="refreshChange"
>
<template slot-scope="{ row }" slot="theoryGrade">
- {{ row.theoryGrade == -1 ? "" : row.theoryGrade }}
+ {{ row.theoryGrade }}
</template>
<template slot-scope="{ row }" slot="learnGrade">
- {{ row.learnGrade == -1 ? "暂未录入" : row.learnGrade }}
+ {{ row.learnGrade == "" ? "暂未录入" : row.learnGrade }}
</template>
<template slot-scope="{ row }" slot="allGrade">
{{ row.allGrade == -1 ? "" : row.allGrade }}
</template>
<template slot-scope="{ row }" slot="qualified">
{{
- row.qualified == -1
+ row.qualified == ""
? ""
: row.qualified == 0
? "合格"
@@ -84,10 +90,20 @@
@click="handleExport"
>成绩导出
</el-button>
+ <el-button
+ type="primary"
+ size="small"
+ plain
+ v-if="permission.trainExam_performance_paper_apply"
+ icon="el-icon-collection-tag"
+ @click="handleSecurityPaperApply"
+ >证书制证申请
+ </el-button>
</template>
<template slot-scope="{ type, size, row }" slot="menu">
<el-button
+ style="display:none"
icon="el-icon-s-flag"
@click="absent(row)"
:size="size"
@@ -95,12 +111,27 @@
>缺考标记</el-button
>
<el-button
- icon="el-icon-s-flag"
+ icon="el-icon-s-promotion"
@click="openzhengjian(row)"
:disabled="row.qualified != 0"
:size="size"
:type="type"
- >打印证件</el-button
+ >查看证件</el-button
+ >
+ <el-button
+ icon="el-icon-edit"
+ @click="modifiedGrades(row)"
+ :size="size"
+ :type="type"
+ >申请修改成绩</el-button
+ >
+ <el-button
+ icon="el-icon-edit"
+ v-if="row.isPaper==6"
+ @click="securityPaperApply(row)"
+ :size="size"
+ :type="type"
+ >补证申请</el-button
>
</template>
</avue-crud>
@@ -126,13 +157,117 @@
</div>
</el-card>
</el-col>
+
+ <el-dialog
+ title="申请修改成绩"
+ :visible.sync="gradeBoxVisible"
+ width="width"
+ :modal="true"
+ :modal-append-to-body="true"
+ :append-to-body="true"
+ :close-on-click-modal="false"
+ :close-on-press-escape="false"
+ :before-close="dialogBeforeClose"
+ >
+ <div>
+ <el-form
+ ref="gradeForm"
+ :model="gradeForm"
+ :rules="rules"
+ label-width="80px"
+ label-position="left"
+ >
+ <el-row :gutter="24">
+ <el-col :span="12">
+ <el-form-item label="考试名称" label-width="108px">
+ <el-input v-model="gradeForm.examName" disabled></el-input>
+ </el-form-item>
+ </el-col>
+ <el-col :span="12">
+ <el-form-item label="姓名" label-width="108px">
+ <el-input v-model="gradeForm.securityName" disabled></el-input>
+ </el-form-item>
+ </el-col>
+ </el-row>
+
+ <el-row :gutter="24">
+ <el-col :span="12">
+ <el-form-item label="身份证号" label-width="108px">
+ <el-input v-model="gradeForm.account" disabled></el-input>
+ </el-form-item>
+ </el-col>
+ <el-col :span="12">
+ <el-form-item label="准考证号" label-width="108px">
+ <el-input v-model="gradeForm.candidateNo" disabled></el-input>
+ </el-form-item>
+ </el-col>
+ </el-row>
+
+ <el-row :gutter="24">
+ <el-col :span="12">
+ <el-form-item label="原理论成绩" label-width="108px">
+ <el-input v-model="gradeForm.theoryGrade" disabled></el-input>
+ </el-form-item>
+ </el-col>
+ <el-col :span="12">
+ <el-form-item
+ label="修改考试成绩"
+ label-width="108px"
+ prop="editGrades"
+ >
+ <el-input
+ v-model.number="gradeForm.editGrades"
+ autocomplete="off"
+ ></el-input>
+ </el-form-item>
+ </el-col>
+ </el-row>
+
+ <el-row :gutter="24">
+ <el-col :span="12">
+ <el-form-item label="实操成绩" label-width="108px">
+ <el-input v-model="gradeForm.learnGrade" disabled></el-input>
+ </el-form-item>
+ </el-col>
+ <el-col :span="12">
+ <el-form-item label="总成绩" label-width="108px">
+ <el-input v-model="gradeForm.allGrade" disabled></el-input>
+ </el-form-item>
+ </el-col>
+ </el-row>
+
+ <el-form-item label="修改理由" label-width="108px">
+ <el-input
+ type="textarea"
+ :rows="3"
+ placeholder="请输入修改理由"
+ resize="none"
+ v-model="gradeForm.editReason"
+ ></el-input>
+ </el-form-item>
+
+ <el-form-item style="text-align: center" label-width="0">
+ <el-button type="primary" @click="uploadGrade('gradeForm')"
+ >确 定</el-button
+ >
+ <el-button @click="gradeBoxVisible = false">取 消</el-button>
+ </el-form-item>
+ </el-form>
+ </div>
+ </el-dialog>
+
<!-- <el-dialog
title="打印证件"
:visible.sync="dialogVisiblezhengjian"
:modal-append-to-body="false"
> -->
<div class="dialogVisiblezhengjian" v-if="dialogVisiblezhengjian">
- <baoanz :data="baoanzdata" :close="1" @close="closezhengjian"></baoanz>
+ <baoanz
+ :data="baoanzdata"
+ :close="1"
+ @close="closezhengjian"
+ :closePrint="1"
+ ></baoanz>
</div>
<!-- </el-dialog> -->
</el-row>
@@ -140,9 +275,15 @@
<script>
import baoanz from "../securityGuard/baoanz.vue";
-import { getList, update, updateAbsent } from "@/api/examapi/performance";
+import {
+ getList,
+ update,
+ updateAbsent,
+ updateGrade,
+} from "@/api/examapi/performance";
import { mapGetters } from "vuex";
import { getRoleDetail } from "@/api/system/role";
+import { securityApply,add} from "@/api/accreditationRecords/accreditationRecords";
import Qs from "qs";
export default {
components: {
@@ -150,7 +291,6 @@
},
data() {
var validatePass = (rule, value, callback) => {
- console.log(value);
if (value == undefined || value == "") {
callback(new Error("请输入实操成绩"));
return;
@@ -164,8 +304,40 @@
callback();
}
};
+ var validatePass2 = (rule, value, callback) => {
+ if (value == undefined || value == "") {
+ callback(new Error("请输入理论成绩"));
+ return;
+ } else if (value !== "" && isNaN(value) == true) {
+ callback(new Error("请输入数字"));
+ } else if (value <= 0) {
+ callback(new Error("分数设置请大于0"));
+ } else if (value > 100) {
+ callback(new Error("分数设置请小于100"));
+ } else {
+ callback();
+ }
+ };
return {
+ rules: {
+ editGrades: [
+ { validator: validatePass2, required: true, trigger: "blur" },
+ ],
+ },
+ gradeForm: {
+ id: null,
+ examName: "",
+ securityName: "",
+ account: "",
+ candidateNo: "",
+ theoryGrade: "",
+ learnGrade: "",
+ allGrade: "",
+ editGrades: "",
+ editReason: "",
+ },
+ gradeBoxVisible: false,
dialogVisiblezhengjian: false,
baoanzdata: {},
obj: {
@@ -177,16 +349,24 @@
delBtn: false,
editBtn: true,
addBtn: false,
- selection: false,
// 导出按钮
// excelBtn: true,
// excelBtnText: "成绩导出",
- viewBtn: true,
+ viewBtn: false,
+ selection: true,
+ reserveSelection: true,
+ selectable: (row) => {
+ if (row.qualified != "0" || row.isPaper==6) {
+ return false;
+ } else {
+ return true;
+ }
+ },
// title: '成绩',
align: "center",
height: "auto",
calcHeight: 80,
- tip: false,
+ tip: true,
searchShow: true,
searchMenuSpan: 4,
index: true,
@@ -195,8 +375,10 @@
dialogClickModal: false,
// 操作栏宽度
menu: true,
- menuWidth: 295,
+ menuWidth: 330,
labelWidth: 120,
+ ...this.$store.state.control.clearOtherBut,
+
column: [
{
label: "考试时间",
@@ -250,8 +432,8 @@
trigger: "blur",
},
],
- width: 210,
- // overHidden:true,
+ width: 200,
+ overHidden:true,
},
{
label: "姓名",
@@ -315,6 +497,7 @@
prop: "candidateNo",
search: true,
searchSpan: 4,
+ hide:true,
slot: true,
// 表单新增时是否禁止
addDisabled: false,
@@ -335,7 +518,14 @@
trigger: "blur",
},
],
- width: 140,
+ width: 110,
+ },
+ {
+ label: "照片",
+ prop: "avatar",
+ type: "upload",
+ listType: "picture-img",
+ width:60,
},
{
label: "所属公司",
@@ -367,7 +557,8 @@
trigger: "blur",
},
],
- width: 230,
+ width: 180,
+ overHidden: true,
},
{
label: "考试开始时间",
@@ -414,13 +605,13 @@
editDetail: false,
},
{
- label: "状态",
+ label: "考试状态",
prop: "isExam",
type: "select",
slot: true,
search: true,
searchSpan: 3,
- width: 60,
+ width: 80,
dicData: [
{
label: "发布成绩",
@@ -429,6 +620,10 @@
{
label: "考试中",
value: 3,
+ },
+ {
+ label: "缺考",
+ value: 4,
},
],
// 表单新增时是否禁止
@@ -455,6 +650,7 @@
label: "理论成绩",
prop: "theoryGrade",
slot: true,
+ sortable: true,
// 表单新增时是否禁止
addDisabled: false,
// 表单新增时是否可见
@@ -473,6 +669,7 @@
label: "实操成绩",
prop: "learnGrade",
slot: true,
+ sortable: true,
// 表单新增时是否禁止
addDisabled: false,
// 表单新增时是否可见
@@ -494,6 +691,7 @@
label: "总成绩",
prop: "allGrade",
slot: true,
+ sortable: true,
// 表单新增时是否禁止
addDisabled: false,
// 表单新增时是否可见
@@ -506,20 +704,15 @@
editDisplay: true,
// 表单编辑时是否为查看模式
editDetail: false,
+
width: 58,
- rules: [
- {
- required: true,
- message: "请输入考试名称",
- trigger: "blur",
- },
- ],
},
{
label: "是否合格",
prop: "qualified",
type: "select",
slot: true,
+ hide: true,
search: true,
searchSpan: 3,
width: 68,
@@ -550,14 +743,100 @@
// 表单编辑时是否禁止
editDisabled: true,
// 表单编辑时是否可见
+ editDisplay: false,
+ viewDetail: false,
+ viewDisplay: false,
+ // 表单编辑时是否为查看模式
+ editDetail: false,
+ },
+ {
+ label: "是否合格",
+ prop: "qualifieds",
+ type: "select",
+ // search: true,
+ searchSpan: 3,
+ width: 68,
+ dicData: [
+ {
+ label: "合格",
+ value: 0,
+ },
+ {
+ label: "不合格",
+ value: 1,
+ },
+ {
+ label: "暂未录实操成绩",
+ value: 2,
+ },
+ {
+ label: "缺考,成绩无效",
+ value: 3,
+ },
+ ],
+ // 表单新增时是否禁止
+ addDisabled: false,
+ // 表单新增时是否可见
+ addDisplay: false,
+ // 表单新增时是否为查看模式
+ addDetail: false,
+ // 表单编辑时是否禁止
+ editDisabled: true,
+ // 表单编辑时是否可见
editDisplay: true,
// 表单编辑时是否为查看模式
editDetail: false,
- rules: [
+ },
+ {
+ label: "是否制证",
+ prop: "isPaper",
+ type: "select",
+ search: true,
+ width: 70,
+ searchSpan: 3,
+ addDisplay: false,
+ editDisplay: false,
+ // hide: true,
+ display: false,
+ dicData: [
{
- required: true,
- message: "请输入考试名称",
- trigger: "blur",
+ label: "全部",
+ value: 10,
+ },
+ {
+ label: "已制证",
+ value: 6,
+ },
+ {
+ label: "未制证",
+ value: 7,
+ },
+ ],
+ },
+ {
+ label: "有无照片",
+ prop: "isAvatar",
+ type: "select",
+ search: true,
+ searchLabelWidth: 90,
+ minWidth: 105,
+ searchSpan: 3,
+ addDisplay: false,
+ editDisplay: false,
+ hide: true,
+ display: false,
+ dicData: [
+ {
+ label: "全部",
+ value: 3,
+ },
+ {
+ label: "有",
+ value: 1,
+ },
+ {
+ label: "无",
+ value: 2,
},
],
},
@@ -566,10 +845,13 @@
questionBankSearch: {},
questionBankLoading: true,
questionBankData: [],
+ sort:"",
+ sortName:"",
questionBankPage: {
pageSize: 10,
currentPage: 1,
total: 16,
+ ...this.$store.state.control.changePageSize,
},
questionBankQuery: {},
questionBankSelectionList: [],
@@ -625,6 +907,7 @@
},
],
},
+ choiceList: [],
};
},
created() {},
@@ -651,6 +934,53 @@
},
},
methods: {
+ selectionChange(list) {
+ // this.selectionList = list;
+ this.choiceList = [];
+ for (let k in list) {
+ this.choiceList.push({
+ id: list[k].userId,
+ });
+ }
+ },
+ //证书制证申请
+ handleSecurityPaperApply() {
+ if (this.choiceList.length === 0) {
+ this.$message.warning("请勾选至少一位持证保安员");
+ return;
+ }
+ this.$confirm(
+ "共选择制证申请人数" + this.choiceList.length + "人,确定申请制证?",
+ {
+ confirmButtonText: "确定",
+ cancelButtonText: "取消",
+ type: "warning",
+ }
+ )
+ .then(() => {
+ let cho = this.choiceList;
+ let str = "";
+ for (let k in cho) {
+ str += cho[k].id;
+ if (k != cho.length - 1) {
+ str += ",";
+ }
+ }
+ const data = {
+ ids: str,
+ createUser: this.userInfo.user_id,
+ type: 2,
+ };
+ return securityApply(data);
+ })
+ .then(() => {
+ this.$refs.questionBankCrud.toggleSelection();
+ this.$message({
+ type: "success",
+ message: "操作成功!",
+ });
+ });
+ },
openzhengjian(row) {
this.baoanzdata = {
realName: row.securityName,
@@ -663,6 +993,27 @@
},
closezhengjian() {
this.dialogVisiblezhengjian = false;
+ },
+ //排序
+ sortChange(value) {
+ if(value.order=="ascending"){
+ this.sort = "asc";
+ }
+ if(value.order=="descending"){
+ this.sort = "desc";
+ }
+ this.sortName = value.prop;
+ //字段匹配
+ if(value.prop=="theoryGrade"){
+ this.sortName = "theory_grade";
+ }
+ if(value.prop=="learnGrade"){
+ this.sortName = "learn_grade";
+ }
+ if(value.prop=="allGrade"){
+ this.sortName = "all_grade";
+ }
+ this.questionBankOnLoad(this.questionBankPage);
},
questionBankOnLoad(page, params = {}) {
//判断角色,如果是保安公司管理员或保安,只能查看当前公司的考试成绩
@@ -682,12 +1033,37 @@
}
that.questionBankLoading = false;
params["examType"] = 2;
+ if(this.sort){
+ params["sort"] = this.sort;
+ }
+ if(this.sortName){
+ params["sortName"] = this.sortName;
+ }
getList(
page.currentPage,
page.pageSize,
Object.assign(params, this.questionBankQuery)
).then((res) => {
const data = res.data.data;
+
+ data.records.forEach((item) => {
+ if (item.isPaper == null || item.isPaper == -1) {
+ item.isPaper = "";
+ }
+ if (item.theoryGrade == null && item.learnGrade == -1) {
+ item.qualified = "";
+ }
+ item.theoryGrade == null
+ ? (item.theoryGrade = "")
+ : item.theoryGrade;
+ item.learnGrade == -1 ? (item.learnGrade = "") : item.learnGrade;
+ });
+ for (let k in data.records) {
+ data.records[k]["qualifieds"] =
+ data.records[k]["qualified"] == -1
+ ? ""
+ : data.records[k]["qualified"];
+ }
that.questionBankPage.total = data.total;
that.questionBankData = data.records;
that.questionBankLoading = false;
@@ -696,17 +1072,21 @@
});
});
},
- //缺考标记
- absent(row, done, loading) {
- this.$confirm("确定缺考标记?", {
+ //补证申请
+ securityPaperApply(row,done,loading){
+ this.$confirm("当前保安员已制证,确定要继续申请制证?", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning",
}).then(() => {
- row.qualified = 3;
- updateAbsent(row).then(
+ const data = {
+ createUser:this.userInfo.user_id,
+ type:2,
+ userId:row.userId
+ }
+ add(data).then(
() => {
- this.onLoad(this.page);
+ this.questionBankOnLoad(this.questionBankPage);
this.$message({
type: "success",
message: "操作成功!",
@@ -720,12 +1100,102 @@
);
});
},
+ //缺考标记
+ absent(row, done, loading) {
+ this.$confirm("确定缺考标记?", {
+ confirmButtonText: "确定",
+ cancelButtonText: "取消",
+ type: "warning",
+ }).then(() => {
+ row.qualified = 3;
+ updateAbsent(row).then(
+ () => {
+ this.questionBankOnLoad(this.questionBankPage);
+ this.$message({
+ type: "success",
+ message: "操作成功!",
+ });
+ done();
+ },
+ (error) => {
+ window.console.log(error);
+ loading();
+ }
+ );
+ });
+ },
+
+ // 修改考试成绩
+ modifiedGrades(row) {
+ var {
+ id,
+ examName,
+ securityName,
+ account,
+ candidateNo,
+ theoryGrade,
+ learnGrade,
+ allGrade,
+ } = row;
+
+ this.gradeForm.examName = examName;
+ this.gradeForm.securityName = securityName;
+ this.gradeForm.account = account;
+ this.gradeForm.candidateNo = candidateNo;
+ this.gradeForm.theoryGrade = theoryGrade;
+ this.gradeForm.learnGrade = learnGrade;
+ this.gradeForm.allGrade = allGrade;
+ this.gradeForm.editGrades = "";
+ this.gradeForm.editReason = "";
+ this.gradeForm.id = id;
+
+ this.gradeBoxVisible = true;
+ },
+
+ uploadGrade(formName) {
+ var that = this;
+
+ this.$refs[formName].validate((valid) => {
+ if (valid) {
+ var obj = {};
+ obj.oldScore = this.gradeForm.theoryGrade;
+ obj.newScore = this.gradeForm.editGrades;
+ obj.applyCause = this.gradeForm.editReason;
+ obj.examScoreId = this.gradeForm.id;
+ obj.createUser = this.userInfo.Id;
+
+ updateGrade(obj).then(
+ () => {
+ that.questionBankOnLoad(that.questionBankPage);
+ that.$message({
+ type: "success",
+ message: "操作成功!",
+ });
+
+ that.gradeBoxVisible = false;
+ },
+ (error) => {
+ window.console.log(error);
+ }
+ );
+ }
+ });
+ },
+
questionBankSelectionClear() {
this.questionBankSelectionList = [];
- this.$refs.questionBankCrud.toggleSelection();
+ this.sort = "";
+ this.sortName = "";
+ // this.$refs.questionBankCrud.toggleSelection();
},
questionBankSelectionChange(list) {
- this.questionBankSelectionList = list;
+ // this.questionBankSelectionList = list;
+ this.choiceList = [];
+ for (let k in list) {
+ this.choiceList.push({
+ id: list[k].userId,
+ });
+ }
},
questionBankSearchChange(params, done) {
this.questionBankQuery = params;
@@ -774,6 +1244,10 @@
uploadAfter(res, done, loading, column) {
window.console.log(column);
this.excelBox = false;
+ // this.$message({
+ // type: "success",
+ // message: "操作成功!",
+ // });
this.refreshChange();
done();
},
@@ -788,7 +1262,7 @@
type: "warning",
}).then(() => {
//获取查询条件
- console.log(this.questionBankSearch, 456);
+ // console.log(this.questionBankSearch, 456);
var data = {
account: this.questionBankSearch.account,
companyName: this.questionBankSearch.companyName,
@@ -797,6 +1271,8 @@
qualified: this.questionBankSearch.qualified,
securityName: this.questionBankSearch.securityName,
examName: this.questionBankSearch.examName,
+ isAvatar: this.questionBankSearch.isAvatar,
+ isPaper: this.questionBankSearch.isPaper,
};
//导出
if (
@@ -811,6 +1287,7 @@
data["trainUnitId"] = this.userInfo.dept_id;
}
data["examType"] = 2;
+ console.log(data,11225111);
//序列号url形式,用&拼接
data = Qs.stringify(data);
window.open(`/api/examScore/export-examScore?` + data);
--
Gitblit v1.9.3