| | |
| | | /* * @Author: Morpheus * @Date: 2021-07-05 16:31:54 * @Last Modified by: liu * |
| | | @Last Modified time: 2021-11-27 10:20:19 * menu-name 成绩管理 */ |
| | | <template> |
| | | <basic-container |
| | | :class="[ |
| | | 'exam-card-body', |
| | | $store.state.control.screenSize == 1366 ? 'smallSize' : 'normalSize', |
| | | $store.state.control.windowWidth >= 1024 ? 'tooRowSearch1' : '' |
| | | ]" |
| | | > |
| | | <avue-crud |
| | | v-model="obj" |
| | | class="company-box tablesss" |
| | | :option="questionBankOption" |
| | | :search.sync="questionBankSearch" |
| | | :table-loading="questionBankLoading" |
| | | :data="questionBankData" |
| | | :permission="permissionList" |
| | | ref="questionBankCrud" |
| | | :page.sync="questionBankPage" |
| | | @sort-change="sortChange" |
| | | @on-load="questionBankOnLoad" |
| | | @selection-change="questionBankSelectionChange" |
| | | @search-change="questionBankSearchChange" |
| | | @search-reset="questionBankSearchReset" |
| | | @current-change="questionBankCurrentChange" |
| | | @size-change="questionBankSizeChange" |
| | | @row-update="questionBankRowUpdate" |
| | | @refresh-change="refreshChange" |
| | | > |
| | | <basic-container :class="[ |
| | | 'exam-card-body', |
| | | $store.state.control.screenSize == 1366 ? 'smallSize' : 'normalSize', |
| | | $store.state.control.windowWidth >= 1024 ? 'tooRowSearch1' : '' |
| | | ]"> |
| | | <avue-crud v-model="obj" class="company-box tablesss" :option="questionBankOption" :search.sync="questionBankSearch" |
| | | :table-loading="questionBankLoading" :data="questionBankData" :permission="permissionList" ref="questionBankCrud" |
| | | :page.sync="questionBankPage" @sort-change="sortChange" @on-load="questionBankOnLoad" |
| | | @selection-change="questionBankSelectionChange" @search-change="questionBankSearchChange" |
| | | @search-reset="questionBankSearchReset" @current-change="questionBankCurrentChange" |
| | | @size-change="questionBankSizeChange" @row-update="questionBankRowUpdate" @refresh-change="refreshChange"> |
| | | <template slot-scope="{ row }" slot="theoryGrade"> |
| | | {{ row.theoryGrade }} |
| | | </template> |
| | | <template slot-scope="{ row }" slot="learnGrade"> |
| | | {{ row.learnGrade == "" ? "暂未录入" : row.learnGrade }} |
| | | </template> |
| | | <!-- <template slot-scope="{ row }" slot="learnGrade"> |
| | | {{ row.learnGrade == -1 ? "暂未录入" : row.learnGrade==0?'合格':'不合格'}} |
| | | </template> --> |
| | | <template slot-scope="{ row }" slot="allGrade"> |
| | | {{ row.allGrade == -1 ? "" : row.allGrade }} |
| | | </template> |
| | | <template slot-scope="{ row }" slot="qualified"> |
| | | {{ |
| | | row.qualified == "" |
| | | ? "" |
| | | : row.qualified == 0 |
| | | ? "" |
| | | : row.qualified == 0 |
| | | ? "合格" |
| | | : row.qualified == 1 |
| | | ? "不合格" |
| | | : row.qualified == 3 |
| | | ? "缺考,成绩无效" |
| | | : "" |
| | | ? "不合格" |
| | | : row.qualified == 3 |
| | | ? "缺考,成绩无效" |
| | | : "" |
| | | }} |
| | | </template> |
| | | |
| | |
| | | plain |
| | | @click="handleDelete">删除 |
| | | </el-button> --> |
| | | <el-button |
| | | type="success" |
| | | size="small" |
| | | plain |
| | | icon="el-icon-upload2" |
| | | v-if="permission.trainExam_performance_import" |
| | | @click="handleImport" |
| | | >实操成绩导入 |
| | | <el-button type="success" size="small" plain icon="el-icon-upload2" v-if="permission.trainExam_performance_import" |
| | | @click="handleImport">实操成绩导入 |
| | | </el-button> |
| | | <el-button |
| | | type="warning" |
| | | size="small" |
| | | plain |
| | | icon="el-icon-download" |
| | | v-if="permission.trainExam_performance_export" |
| | | @click="handleExport" |
| | | >成绩导出 |
| | | <el-button type="warning" size="small" plain icon="el-icon-download" |
| | | v-if="permission.trainExam_performance_export" @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 type="danger" size="small" plain icon="el-icon-delete" v-if="permission.trainExam_performance_delete" |
| | | @click="handleDelete">删 除 |
| | | </el-button> |
| | | <el-button |
| | | type="primary" |
| | | size="small" |
| | | plain |
| | | v-if="permission.trainExam_performance_worker_paper_apply" |
| | | icon="el-icon-collection-tag" |
| | | @click="handleWorkerPaperApply" |
| | | >上岗证制证申请 |
| | | <el-button type="primary" size="small" plain v-if="permission.trainExam_performance_paper_apply" |
| | | style="display: none;" icon="el-icon-collection-tag" @click="handleSecurityPaperApply">证书制证申请 |
| | | </el-button> |
| | | <el-button type="primary" size="small" plain v-if="permission.trainExam_performance_worker_paper_apply" |
| | | style="display: none;" icon="el-icon-collection-tag" @click="handleWorkerPaperApply">上岗证制证申请 |
| | | </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" |
| | | :type="type" |
| | | >缺考标记</el-button |
| | | > |
| | | <el-button |
| | | icon="el-icon-s-promotion" |
| | | @click="openzhengjian(row)" |
| | | :disabled="row.qualified != 0" |
| | | :size="size" |
| | | :type="type" |
| | | >查看证件</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 |
| | | > |
| | | <el-button style="display: none" icon="el-icon-s-flag" @click="absent(row)" :size="size" |
| | | :type="type">缺考标记</el-button> |
| | | <el-button icon="el-icon-s-promotion" @click="openzhengjian(row)" :disabled="row.qualified != 0" :size="size" |
| | | :type="type">查看证件</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> |
| | | |
| | | <el-dialog |
| | | title="实操成绩导入" |
| | | append-to-body |
| | | :visible.sync="excelBox" |
| | | width="555px" |
| | | > |
| | | <avue-form |
| | | :option="excelOption" |
| | | v-model="excelForm" |
| | | :upload-after="uploadAfter" |
| | | > |
| | | <el-dialog title="实操成绩导入" append-to-body :visible.sync="excelBox" width="555px"> |
| | | <avue-form :option="excelOption" v-model="excelForm" :upload-after="uploadAfter"> |
| | | <template slot="excelTemplate"> |
| | | <el-button type="primary" @click="handleTemplate"> |
| | | 点击下载<i class="el-icon-download el-icon--right"></i> |
| | |
| | | </avue-form> |
| | | </el-dialog> |
| | | |
| | | <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" |
| | | > |
| | | <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" |
| | |
| | | <el-button @click="gradeBoxVisible = false">取 消</el-button> |
| | | </el-form-item> |
| | | </el-form> --> |
| | | <avue-form |
| | | ref="form" |
| | | :option="option" |
| | | v-model="form" |
| | | @reset-change="emptytChange" |
| | | @submit="submit" |
| | | > |
| | | <avue-form ref="form" :option="option" v-model="form" @reset-change="emptytChange" @submit="submit"> |
| | | </avue-form> |
| | | </div> |
| | | </el-dialog> |
| | |
| | | :modal-append-to-body="false" |
| | | > --> |
| | | <div class="dialogVisiblezhengjian" v-if="dialogVisiblezhengjian"> |
| | | <baoanz |
| | | :data="baoanzdata" |
| | | :close="1" |
| | | @close="closezhengjian" |
| | | :closePrint="1" |
| | | ></baoanz> |
| | | <baoanz :data="baoanzdata" :close="1" @close="closezhengjian" :closePrint="1"></baoanz> |
| | | </div> |
| | | </basic-container> |
| | | </template> |
| | |
| | | update, |
| | | updateAbsent, |
| | | updateGrade, |
| | | remove, |
| | | getNowDate |
| | | } from "@/api/examapi/performance"; |
| | | import { mapGetters } from "vuex"; |
| | |
| | | label: "实操成绩", |
| | | prop: "learnGrade", |
| | | labelWidth: 110, |
| | | type: "select", |
| | | disabled: true, |
| | | rules: [ |
| | | { |
| | |
| | | message: "请输入实操成绩", |
| | | trigger: "blur" |
| | | } |
| | | ] |
| | | }, |
| | | { |
| | | label: "总成绩", |
| | | prop: "allGrade", |
| | | labelWidth: 110, |
| | | disabled: true, |
| | | rules: [ |
| | | ], |
| | | dicData: [ |
| | | { |
| | | required: false, |
| | | message: "请输入总成绩", |
| | | trigger: "blur" |
| | | label: "合格", |
| | | value: 0 |
| | | }, |
| | | { |
| | | label: "不合格", |
| | | value: 1 |
| | | }, |
| | | { |
| | | label: "暂未录实操成绩", |
| | | value: 2 |
| | | } |
| | | ] |
| | | ], |
| | | }, |
| | | // { |
| | | // label: "总成绩", |
| | | // prop: "allGrade", |
| | | // labelWidth: 110, |
| | | // disabled: true, |
| | | // rules: [ |
| | | // { |
| | | // required: false, |
| | | // message: "请输入总成绩", |
| | | // trigger: "blur" |
| | | // } |
| | | // ] |
| | | // }, |
| | | { |
| | | label: "笔试答题图片", |
| | | prop: "url", |
| | |
| | | selection: true, |
| | | reserveSelection: true, |
| | | selectable: row => { |
| | | if (row.qualified != "0" || row.isPaper == 6) { |
| | | if (row.isExam == 3) { |
| | | return false; |
| | | } else { |
| | | return true; |
| | |
| | | editDetail: false |
| | | }, |
| | | { |
| | | label: "所属公司", |
| | | prop: "companyName", |
| | | sortable: true, |
| | | label: "从业单位", |
| | | prop: "unitName", |
| | | search: true, |
| | | searchSpan: 4, |
| | | // dicUrl: '/api/blade-system/dept/tree', |
| | | // props: { |
| | | // label: "title", |
| | | // value: "id", |
| | | // }, |
| | | slot: true, |
| | | // 表单新增时是否禁止 |
| | | addDisabled: false, |
| | | // 表单新增时是否可见 |
| | |
| | | rules: [ |
| | | { |
| | | required: true, |
| | | message: "请输入所属公司", |
| | | message: "请输入从业单位", |
| | | trigger: "blur" |
| | | } |
| | | ], |
| | |
| | | { |
| | | label: "实操成绩", |
| | | prop: "learnGrade", |
| | | slot: true, |
| | | sortable: true, |
| | | type: "select", |
| | | // slot: true, |
| | | // sortable: true, |
| | | // 表单新增时是否禁止 |
| | | addDisabled: false, |
| | | // 表单新增时是否可见 |
| | |
| | | // 表单编辑时是否为查看模式 |
| | | editDetail: false, |
| | | width: 95, |
| | | rules: [ |
| | | { validator: validatePass, required: true, trigger: "blur" } |
| | | ] |
| | | dicData: [ |
| | | { |
| | | label: "合格", |
| | | value: 0 |
| | | }, |
| | | { |
| | | label: "不合格", |
| | | value: 1 |
| | | } |
| | | ], |
| | | }, |
| | | { |
| | | label: "总成绩", |
| | | prop: "allGrade", |
| | | slot: true, |
| | | sortable: true, |
| | | // 表单新增时是否禁止 |
| | | addDisabled: false, |
| | | // 表单新增时是否可见 |
| | | addDisplay: true, |
| | | // 表单新增时是否为查看模式 |
| | | addDetail: false, |
| | | // 表单编辑时是否禁止 |
| | | editDisabled: true, |
| | | // 表单编辑时是否可见 |
| | | editDisplay: true, |
| | | // 表单编辑时是否为查看模式 |
| | | editDetail: false, |
| | | width: 80 |
| | | }, |
| | | // { |
| | | // label: "总成绩", |
| | | // prop: "allGrade", |
| | | // slot: true, |
| | | // sortable: true, |
| | | // // 表单新增时是否禁止 |
| | | // addDisabled: false, |
| | | // // 表单新增时是否可见 |
| | | // addDisplay: true, |
| | | // // 表单新增时是否为查看模式 |
| | | // addDetail: false, |
| | | // // 表单编辑时是否禁止 |
| | | // editDisabled: true, |
| | | // // 表单编辑时是否可见 |
| | | // editDisplay: true, |
| | | // // 表单编辑时是否为查看模式 |
| | | // editDetail: false, |
| | | // width: 80 |
| | | // }, |
| | | { |
| | | label: "是否合格", |
| | | prop: "qualified", |
| | |
| | | ...this.$store.state.control.changePageSize |
| | | }, |
| | | questionBankQuery: {}, |
| | | selectionList: [], |
| | | questionBankSelectionList: [], |
| | | excelForm: {}, |
| | | excelOption: { |
| | |
| | | choiceList: [] |
| | | }; |
| | | }, |
| | | created() {}, |
| | | created() { }, |
| | | mounted() { |
| | | this.$store.commit("setWindowSizeHeightAdd"); |
| | | }, |
| | | computed: { |
| | | ...mapGetters(["userInfo", "permission"]), |
| | | ids() { |
| | | let ids = []; |
| | | this.questionBankSelectionList.forEach(ele => { |
| | | ids.push(ele.id); |
| | | }); |
| | | return ids.join(","); |
| | | }, |
| | | permissionList() { |
| | | return { |
| | | addBtn: this.vaildData(null, false), |
| | |
| | | } |
| | | }, |
| | | methods: { |
| | | // 批量删除 |
| | | handleDelete() { |
| | | 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.crud.toggleSelection(); |
| | | }); |
| | | }, |
| | | //提交考试成绩修改申请 |
| | | submit(row, done, loading) { |
| | | var that = this; |
| | |
| | | name: res.data.data.name, |
| | | url: res.data.data.url |
| | | }); |
| | | console.log(that.gradeForm.fileList, 365441); |
| | | // console.log(that.gradeForm.fileList, 365441); |
| | | }); |
| | | console.log(that.gradeForm.fileList, 11122222); |
| | | // console.log(that.gradeForm.fileList, 11122222); |
| | | }, |
| | | //图片展示 |
| | | handlePictureCardPreview(file) { |
| | |
| | | handleRemove(file) { |
| | | var index = []; |
| | | //遍历图片集合,获取下标 |
| | | this.gradeForm.fileList.forEach(function(img, i) { |
| | | this.gradeForm.fileList.forEach(function (img, i) { |
| | | if (img.name == file.name) { |
| | | index.push(i); |
| | | //存储对象中删除 |
| | |
| | | } |
| | | }, |
| | | selectionChange(list) { |
| | | // this.selectionList = list; |
| | | this.selectionList = list; |
| | | this.choiceList = []; |
| | | for (let k in list) { |
| | | this.choiceList.push({ |
| | |
| | | } |
| | | this.$confirm( |
| | | "共选择上岗证制证申请人数" + |
| | | this.choiceList.length + |
| | | "人,确定申请制证?", |
| | | this.choiceList.length + |
| | | "人,确定申请制证?", |
| | | { |
| | | confirmButtonText: "确定", |
| | | cancelButtonText: "取消", |
| | |
| | | ); |
| | | }); |
| | | }, |
| | | |
| | | // 修改考试成绩 |
| | | modifiedGrades(row) { |
| | | var that = this; |
| | |
| | | var num = 24 * 3600 * 1000; |
| | | if (this.userInfo.role_name == "培训公司管理员") { |
| | | // if (res.data.data - longtime <= num) { |
| | | this.form = { |
| | | id: null, |
| | | examScoreId: row.id, |
| | | examName: row.examName, |
| | | candidateNo: row.candidateNo, |
| | | account: row.account, |
| | | securityName: row.securityName, |
| | | theoryGrade: row.theoryGrade, |
| | | learnGrade: row.learnGrade, |
| | | allGrade: row.allGrade |
| | | }; |
| | | this.gradeBoxVisible = true; |
| | | this.form = { |
| | | id: null, |
| | | examScoreId: row.id, |
| | | examName: row.examName, |
| | | candidateNo: row.candidateNo, |
| | | account: row.account, |
| | | securityName: row.securityName, |
| | | theoryGrade: row.theoryGrade, |
| | | learnGrade: row.learnGrade, |
| | | allGrade: row.allGrade |
| | | }; |
| | | this.gradeBoxVisible = true; |
| | | // } else { |
| | | // //提示 |
| | | // that.$message({ |
| | |
| | | } |
| | | }); |
| | | }, |
| | | |
| | | uploadGrade(formName) { |
| | | var that = this; |
| | | |
| | |
| | | } |
| | | }); |
| | | }, |
| | | |
| | | questionBankSelectionClear() { |
| | | this.questionBankSelectionList = []; |
| | | this.sort = ""; |
| | |
| | | // this.$refs.questionBankCrud.toggleSelection(); |
| | | }, |
| | | questionBankSelectionChange(list) { |
| | | // this.questionBankSelectionList = list; |
| | | this.questionBankSelectionList = list; |
| | | this.choiceList = []; |
| | | for (let k in list) { |
| | | this.choiceList.push({ |
| | |
| | | questionBankSizeChange(pageSize) { |
| | | this.questionBankPage.pageSize = pageSize; |
| | | }, |
| | | |
| | | questionBankRowUpdate(row, index, done, loading) { |
| | | update({ |
| | | theoryGrade: row.theoryGrade, |
| | |
| | | }, |
| | | handleTemplate() { |
| | | window.open( |
| | | `/api/examScore/export-template?${ |
| | | this.website.tokenHeader |
| | | `/api/examScore/export-template?${this.website.tokenHeader |
| | | }=${getToken()}&` |
| | | ); |
| | | }, |
| | |
| | | //序列号url形式,用&拼接 |
| | | data = Qs.stringify(data); |
| | | window.open( |
| | | `/api/examScore/export-examScore?${ |
| | | this.website.tokenHeader |
| | | `/api/examScore/export-examScore?${this.website.tokenHeader |
| | | }=${getToken()}&` + data |
| | | ); |
| | | }); |
| | |
| | | .morpheus-box { |
| | | position: relative; |
| | | } |
| | | |
| | | .dialogVisiblezhengjian { |
| | | position: absolute; |
| | | background-color: #fff; |