flx:提交考试

This commit is contained in:
X_Rian 2024-09-19 18:39:47 +08:00
parent ef51748d92
commit 3ab9c72cd8
5 changed files with 253 additions and 63 deletions

View File

@ -26,7 +26,7 @@
</div>
<div style="background: #fff; padding-bottom: 10px">
<el-tabs v-model="activeName" @tab-click="handleClick">
<el-tab-pane label="扫码记录" name="first">
<el-tab-pane label="扫码记录" lazy name="first" v-cloak>
<div class="title">
<div>
<el-form :inline="true" :model="formInline" class="demo-form-inline" size="small">
@ -67,7 +67,7 @@
:page-sizes="[10, 20, 30, 40]" :page-size="examQRCodeInfo.pageSize" :total="Number(examQRCodeInfo.total)">
</el-pagination>
</el-tab-pane>
<el-tab-pane label="考试记录" name="second">
<el-tab-pane label="考试记录" lazy name="second" v-cloak>
<div class="title">
<div>
<el-form :inline="true" :model="formInline" class="demo-form-inline" size="small">
@ -132,7 +132,7 @@
:page-sizes="[10, 20, 30, 40]" :page-size="pageSize" :total="Number(total)">
</el-pagination>
</el-tab-pane>
<el-tab-pane label="违章再教育" name="third">
<el-tab-pane label="违章再教育" lazy name="third" v-cloak>
<div class="title">
<div>
<el-form :inline="true" :model="formInline" class="demo-form-inline" size="small">
@ -382,8 +382,8 @@ export default {
projectSn: this.projectSn,
workerName: this.formInline.workerName,
examPaperId: this.examDetailInfo.id,
pageNo: this.pageNo,
pageSize: this.pageSize,
pageNo: this.examQRCodeInfo.pageNo,
pageSize: this.examQRCodeInfo.pageSize,
}).then((res) => {
if (res.code == 200) {
this.examQRCodeList = res.result.records;
@ -447,6 +447,9 @@ export default {
</script>
<style lang="less" scoped>
[v-cloak] {
display: none;
}
.tables {
min-height: 540px;
// max-height: 540px;

View File

@ -18,6 +18,9 @@
@click="getRecordList()">
查询
</el-button>
<el-button type="warning" plain @click="refresh">{{
$t("message.deviceManage.refresh")
}}</el-button>
<el-button class="expintBtn" size="medium" type="primary" @click="addExam()"
v-permission="{ key: 'examManagement_add', menuPath: '/project/examSystem2/examManagement' }">
新增考试
@ -428,10 +431,10 @@
<img src="@/assets/images/icon-qrcode.png" width="15px" height="15px" />
<span style="white-space: nowrap;display:flex;align-items:center">二维码</span>
</div> -->
<el-button style="margin-left:10px;" class="expintBtn" size="small" type="primary">
<el-button style="margin-left:10px;" class="expintBtn" size="small" type="primary" @click="exportBtn(1)">
导出安全培训台账
</el-button>
<el-button style="margin-left:10px;" class="expintBtn" size="small" type="primary">
<el-button style="margin-left:10px;" class="expintBtn" size="small" type="primary" @click="exportBtn(2)">
导出特种人员培训台账
</el-button>
</div>
@ -1192,7 +1195,6 @@ export default {
let data = {
projectSn: this.projectSn,
}
pagePaperApi({
pageNo: this.pagInfo.pageNo,
pageSize: this.pagInfo.pageSize,
@ -1206,6 +1208,12 @@ export default {
}
})
},
refresh() {
this.questionName = "";
this.name = "";
this.pageInfo.pageNo = 1; //
this.getRecordList();
},
///
submitBtn() {
@ -1413,7 +1421,46 @@ export default {
refreshFn() {
this.pagInfo.pageNo = 1
this.getRecordList()
}
},
exportBtn(type) {
fetch(this.$http.defaults.baseURL + 'exam/trainRecord/exportXls', {
method: "post",
headers: {
'Authorization': this.$store.state.userInfo.token,
"Content-Type": "application/json",
},
body: JSON.stringify({
excelType: type,
examPaperId: this.examDetailInfo.id,
}),
}).then(response => {
//
if (!response.ok) {
throw new Error('导出失败');
}
return response.blob();
})
.then(blob => {
console.log('导出成功');
//
const url = window.URL.createObjectURL(blob);
// <a>
const link = document.createElement('a');
link.href = url;
link.download = '安全教育培训台账.xlsx'; //
//
document.body.appendChild(link);
link.click();
document.body.removeChild(link);
// URL
window.URL.revokeObjectURL(url);
//
// 使blob
}).catch(error => {
//
console.error(error);
});
},
},
}
</script>

View File

@ -4,16 +4,16 @@
<!-- 党员活动 -->
<el-form :inline="true" ref="searchForm" :model="searchForm" size="medium">
<el-form-item label="姓名">
<el-input v-model="searchForm.title" placeholder="请输入"></el-input>
<el-input v-model="searchForm.workerName" placeholder="请输入"></el-input>
</el-form-item>
<el-form-item label="单位">
<el-input v-model="searchForm.title" placeholder="请输入"></el-input>
<el-input v-model="searchForm.enterpriseName" placeholder="请输入"></el-input>
</el-form-item>
<el-form-item label="岗位(工种)">
<el-input v-model="searchForm.title" placeholder="请输入"></el-input>
<el-input v-model="searchForm.workerType" placeholder="请输入"></el-input>
</el-form-item>
<el-form-item label="培训时间">
<el-date-picker v-model="searchForm.title" value-format="yyyy-MM-dd" type="daterange" range-separator="至" start-placeholder="开始日期"
<el-date-picker v-model="searchForm.startExamTime" value-format="yyyy-MM-dd" type="daterange" range-separator="至" start-placeholder="开始日期"
end-placeholder="结束日期">
</el-date-picker>
</el-form-item>
@ -24,7 +24,7 @@
<el-button type="warning" plain @click="refresh">{{
$t("message.deviceManage.refresh")
}}</el-button>
<el-button type="primary" size="medium">导出</el-button>
<el-button type="primary" size="medium" @click="exportBtn">导出</el-button>
</el-form-item>
</el-form>
</div>
@ -37,21 +37,37 @@
:src="scope.row.file[0] ? scope.row.file[0].url : []" alt="" width="50px" />
</template>
</el-table-column> -->
<el-table-column prop="title" align="center" label="姓名"></el-table-column>
<el-table-column prop="title" align="center" label="培训日期"></el-table-column>
<el-table-column prop="title" align="center" label="EPC"></el-table-column>
<el-table-column prop="title" align="center" label="单位"></el-table-column>
<el-table-column prop="title" align="center" label="工作区域"></el-table-column>
<el-table-column prop="title" align="center" label="岗位(工种)"></el-table-column>
<el-table-column prop="title" align="center" label="性别"></el-table-column>
<el-table-column prop="title" align="center" label="年龄"></el-table-column>
<el-table-column prop="title" align="center" label="资格证号"></el-table-column>
<el-table-column prop="title" align="center" label="身份证号"></el-table-column>
<el-table-column prop="title" align="center" label="体检"></el-table-column>
<el-table-column prop="title" align="center" label="合同"></el-table-column>
<el-table-column prop="title" align="center" label="保险"></el-table-column>
<el-table-column prop="title" align="center" label="成绩"></el-table-column>
<el-table-column prop="title" align="center" label="考试科目"></el-table-column>
<el-table-column prop="workerName" align="center" label="姓名"></el-table-column>
<el-table-column prop="startExamTime" align="center" label="培训日期"></el-table-column>
<el-table-column prop="epcCbsName" align="center" label="EPC"></el-table-column>
<el-table-column prop="enterpriseName" align="center" label="单位"></el-table-column>
<el-table-column prop="workAreaName" align="center" label="工作区域"></el-table-column>
<el-table-column prop="workerType" align="center" label="岗位(工种)"></el-table-column>
<el-table-column prop="sex" align="center" label="性别">
<template slot-scope="scope">
{{ scope.row.sex === 1 ? "男" : "女" }}
</template>
</el-table-column>
<el-table-column prop="age" align="center" label="年龄"></el-table-column>
<el-table-column prop="certificateNumber" align="center" label="资格证号"></el-table-column>
<el-table-column prop="idCard" align="center" label="身份证号"></el-table-column>
<el-table-column prop="title" align="center" label="体检">
<template slot-scope="scope">
</template>
</el-table-column>
<el-table-column prop="title" align="center" label="合同">
<template slot-scope="scope">
</template>
</el-table-column>
<el-table-column prop="title" align="center" label="保险">
<template slot-scope="scope">
</template>
</el-table-column>
<el-table-column prop="score" align="center" label="成绩"></el-table-column>
<el-table-column prop="subjectName" align="center" label="考试科目"></el-table-column>
<!-- <el-table-column prop="clickRate" align="center" label="专项培训次数">
<template slot-scope="scope">
<div class="download" @click="previewDetail(scope.row, 1)">
@ -147,7 +163,6 @@
<el-table-column prop="realName" align="center" label="考试分数"></el-table-column>
<el-table-column prop="realName" align="center" label="考试结果"></el-table-column>
<el-table-column prop="createDate" align="center" label="考试时间"></el-table-column>
</el-table-column>
<!-- <el-table-column prop="clickNum" align="center" label="学习次数">
<template slot-scope="scope">
<div class="download" @click="previewDetail(scope.row, 2)">
@ -169,7 +184,6 @@
<el-table-column type="index" label="序号" align="center"></el-table-column>
<el-table-column prop="realName" align="center" label="姓名"></el-table-column>
<el-table-column prop="createDate" align="center" label="学习时间"></el-table-column>
</el-table-column>
</el-table>
<el-pagination class="pagerBox" @size-change="SizeChange($event, 2)"
@current-change="CurrentChange($event, 2)" :current-page="pageInfo2.pageNo"
@ -250,7 +264,10 @@ export default {
],
},
searchForm: {
title: "",
workerName: "",
enterpriseName: "",
workerType: "",
startExamTime: "",
},
fileUplodList: [],
editorOption: {
@ -371,7 +388,11 @@ export default {
getList() {
getTrainRecordPageApi({
projectSn: this.$store.state.projectSn,
title: this.searchForm.title,
workerName: this.searchForm.workerName,
enterpriseName: this.searchForm.enterpriseName,
workerType: this.searchForm.workerType,
startExamTime_begin: this.searchForm.startExamTime ? this.searchForm.startExamTime[0] : "",
startExamTime_end: this.searchForm.startExamTime ? this.searchForm.startExamTime[1] : "",
pageNo: this.pageInfo.pageNo,
pageSize: this.pageInfo.pageSize,
}).then((result) => {
@ -515,11 +536,59 @@ export default {
}
},
refresh() {
this.searchForm = {};
this.searchForm = {
workerName: "",
enterpriseName: "",
typeName: "",
startExamTime: "",
};
this.pageInfo.pageNo = 1; //
this.pageInfo.pageSize = 10; //
this.getList();
},
exportBtn() {
fetch(this.$http.defaults.baseURL + 'exam/trainRecord/exportXls', {
method: "post",
headers: {
'Authorization': this.$store.state.userInfo.token,
"Content-Type": "application/json",
},
body: JSON.stringify({
excelType: 1,
workerName: this.searchForm.workerName,
enterpriseName: this.searchForm.enterpriseName,
typeName: this.searchForm.typeName,
startExamTime_begin: this.searchForm.startExamTime ? this.searchForm.startExamTime[0] : "",
startExamTime_end: this.searchForm.startExamTime ? this.searchForm.startExamTime[1] : "",
}),
}).then(response => {
//
if (!response.ok) {
throw new Error('导出失败');
}
return response.blob();
})
.then(blob => {
console.log('导出成功');
//
const url = window.URL.createObjectURL(blob);
// <a>
const link = document.createElement('a');
link.href = url;
link.download = '安全教育培训台账.xlsx'; //
//
document.body.appendChild(link);
link.click();
document.body.removeChild(link);
// URL
window.URL.revokeObjectURL(url);
//
// 使blob
}).catch(error => {
//
console.error(error);
});
},
},
};
</script>

View File

@ -4,16 +4,16 @@
<!-- 党员活动 -->
<el-form :inline="true" ref="searchForm" :model="searchForm" size="medium">
<el-form-item label="姓名">
<el-input v-model="searchForm.title" placeholder="请输入"></el-input>
<el-input v-model="searchForm.workerName" placeholder="请输入"></el-input>
</el-form-item>
<el-form-item label="单位">
<el-input v-model="searchForm.title" placeholder="请输入"></el-input>
<el-input v-model="searchForm.enterpriseName" placeholder="请输入"></el-input>
</el-form-item>
<el-form-item label="岗位(工种)">
<el-input v-model="searchForm.title" placeholder="请输入"></el-input>
<el-input v-model="searchForm.typeName" placeholder="请输入"></el-input>
</el-form-item>
<el-form-item label="培训时间">
<el-date-picker v-model="searchForm.title" value-format="yyyy-MM-dd" type="daterange" range-separator="至" start-placeholder="开始日期"
<el-date-picker v-model="searchForm.startExamTime" value-format="yyyy-MM-dd" type="daterange" range-separator="至" start-placeholder="开始日期"
end-placeholder="结束日期">
</el-date-picker>
</el-form-item>
@ -24,7 +24,7 @@
<el-button type="warning" plain @click="refresh">{{
$t("message.deviceManage.refresh")
}}</el-button>
<el-button type="primary" size="medium">导出</el-button>
<el-button type="primary" size="medium" @click="exportBtn">导出</el-button>
</el-form-item>
</el-form>
</div>
@ -38,23 +38,24 @@
</template>
</el-table-column> -->
<el-table-column prop="workerName" align="center" label="姓名"></el-table-column>
<el-table-column prop="title" align="center" label="性别">
<el-table-column prop="sex" align="center" label="性别">
<template slot-scope="scope">
{{ scope.row.sex === 1 ? "男" : "女" }}
</template>
</el-table-column>
<el-table-column prop="title" align="center" label="年龄"></el-table-column>
<el-table-column prop="age" align="center" label="年龄"></el-table-column>
<el-table-column prop="idCard" align="center" label="身份证号"></el-table-column>
<el-table-column prop="typeName" align="center" label="工种"></el-table-column>
<el-table-column prop="title" align="center" label="资格证号"></el-table-column>
<el-table-column prop="title" align="center" label="发证机关"></el-table-column>
<el-table-column prop="createDate" align="center" label="取证日期"></el-table-column>
<el-table-column prop="createDate" align="center" label="截止日期"></el-table-column>
<el-table-column prop="title" align="center" label="单位"></el-table-column>
<el-table-column prop="clickRate" align="center" label="专项培训次数">
<el-table-column prop="certificateNumber" align="center" label="资格证号"></el-table-column>
<el-table-column prop="issueCompany" align="center" label="发证机关"></el-table-column>
<el-table-column prop="issueTime" align="center" label="取证日期"></el-table-column>
<el-table-column prop="effectTime" align="center" label="截止日期"></el-table-column>
<el-table-column prop="enterpriseName" align="center" label="单位"></el-table-column>
<el-table-column prop="startExamTime" align="center" label="培训时间"></el-table-column>
<el-table-column prop="specialNum" align="center" label="专项培训次数">
<template slot-scope="scope">
<div class="download" @click="previewDetail(scope.row, 1)">
{{ scope.row.clickRate }}
{{ scope.row.specialNum }}
</div>
</template>
</el-table-column>
@ -141,12 +142,15 @@
<div class="dialog_content">
<el-table class="tables" :data="pageInfo1.List">
<el-table-column type="index" label="序号" align="center"></el-table-column>
<el-table-column prop="realName" align="center" label="科目名称"></el-table-column>
<el-table-column prop="realName" align="center" label="试卷名称"></el-table-column>
<el-table-column prop="realName" align="center" label="考试分数"></el-table-column>
<el-table-column prop="realName" align="center" label="考试结果"></el-table-column>
<el-table-column prop="createDate" align="center" label="考试时间"></el-table-column>
<el-table-column prop="subjectName" align="center" label="科目名称"></el-table-column>
<el-table-column prop="examPaperName" align="center" label="试卷名称"></el-table-column>
<el-table-column prop="score" align="center" label="考试分数"></el-table-column>
<el-table-column prop="inspectionResult" align="center" label="考试结果">
<template slot-scope="scope">{{
scope.row.inspectionResult == 1 ? '合格' : '不合格'
}}</template>
</el-table-column>
<el-table-column prop="startExamTime" align="center" label="考试时间"></el-table-column>
<!-- <el-table-column prop="clickNum" align="center" label="学习次数">
<template slot-scope="scope">
<div class="download" @click="previewDetail(scope.row, 2)">
@ -168,7 +172,6 @@
<el-table-column type="index" label="序号" align="center"></el-table-column>
<el-table-column prop="realName" align="center" label="姓名"></el-table-column>
<el-table-column prop="createDate" align="center" label="学习时间"></el-table-column>
</el-table-column>
</el-table>
<el-pagination class="pagerBox" @size-change="SizeChange($event, 2)"
@current-change="CurrentChange($event, 2)" :current-page="pageInfo2.pageNo"
@ -194,6 +197,7 @@ import {
} from "@/assets/js/api/guidancePartyBuilding";
import {
getTrainRecordSpecialPageApi,
getTrainRecordPageApi,
} from '@/assets/js/api/examSystem/examSystem'
import {
getCooperatorListApi
@ -249,7 +253,10 @@ export default {
],
},
searchForm: {
title: "",
workerName: "",
enterpriseName: "",
typeName: "",
startExamTime: "",
},
fileUplodList: [],
editorOption: {
@ -370,7 +377,11 @@ export default {
getList() {
getTrainRecordSpecialPageApi({
projectSn: this.$store.state.projectSn,
title: this.searchForm.title,
workerName: this.searchForm.workerName,
enterpriseName: this.searchForm.enterpriseName,
typeName: this.searchForm.typeName,
startExamTime_begin: this.searchForm.startExamTime ? this.searchForm.startExamTime[0] : "",
startExamTime_end: this.searchForm.startExamTime ? this.searchForm.startExamTime[1] : "",
pageNo: this.pageInfo.pageNo,
pageSize: this.pageInfo.pageSize,
}).then((result) => {
@ -472,15 +483,17 @@ export default {
1: "pageInfo1",
2: "pageInfo2",
}
getPartyBuildingGuidanceClickUserPage({
getTrainRecordPageApi({
projectSn: this.$store.state.projectSn,
pageNo: this[obj[type]].pageNo,
pageSize: this[obj[type]].pageSize,
groupby: type == 1 ? "user" : "",
partyBuildingGuidanceId: this.detailData1.id,
userId: type == 2 ? this.detailData2.userId : "",
createDate_begin: dayjs(this.chooseMonth).startOf('month').format('YYYY-MM-DD'),
createDate_end: dayjs(this.chooseMonth).endOf('month').format('YYYY-MM-DD'),
subjectType: 3,
workerCard: this.detailData1.idCard,
// groupby: type == 1 ? "user" : "",
// partyBuildingGuidanceId: this.detailData1.id,
// userId: type == 2 ? this.detailData2.userId : "",
// createDate_begin: dayjs(this.chooseMonth).startOf('month').format('YYYY-MM-DD'),
// createDate_end: dayjs(this.chooseMonth).endOf('month').format('YYYY-MM-DD'),
}).then((result) => {
if (result.success) {
this[obj[type]].List = result.result.records;
@ -514,11 +527,59 @@ export default {
}
},
refresh() {
this.searchForm = {};
this.searchForm = {
workerName: "",
enterpriseName: "",
typeName: "",
startExamTime: "",
};
this.pageInfo.pageNo = 1; //
this.pageInfo.pageSize = 10; //
this.getList();
},
exportBtn() {
fetch(this.$http.defaults.baseURL + 'exam/trainRecord/exportXls', {
method: "post",
headers: {
'Authorization': this.$store.state.userInfo.token,
"Content-Type": "application/json",
},
body: JSON.stringify({
excelType: 2,
workerName: this.searchForm.workerName,
enterpriseName: this.searchForm.enterpriseName,
typeName: this.searchForm.typeName,
startExamTime_begin: this.searchForm.startExamTime ? this.searchForm.startExamTime[0] : "",
startExamTime_end: this.searchForm.startExamTime ? this.searchForm.startExamTime[1] : "",
}),
}).then(response => {
//
if (!response.ok) {
throw new Error('导出失败');
}
return response.blob();
})
.then(blob => {
console.log('导出成功');
//
const url = window.URL.createObjectURL(blob);
// <a>
const link = document.createElement('a');
link.href = url;
link.download = '特种人员培训台账.xlsx'; //
//
document.body.appendChild(link);
link.click();
document.body.removeChild(link);
// URL
window.URL.revokeObjectURL(url);
//
// 使blob
}).catch(error => {
//
console.error(error);
});
},
},
};
</script>

View File

@ -3747,6 +3747,7 @@ export default {
let data = {
type: this.workerInfo.personType,
};
this.certificateTypeList = [];
getCertificateTypeApi(data).then((res) => {
if (res.code == 200) {
this.certificateTypeList = res.result;
@ -3754,6 +3755,15 @@ export default {
this.$message.error(res.message);
}
});
getCertificateTypeApi({
type: 2
}).then((res) => {
if (res.code == 200) {
this.certificateTypeList.push(...res.result);
} else {
this.$message.error(res.message);
}
});
},
//-----