From bd1ac66da57267b6a244016fec355a6408e735d9 Mon Sep 17 00:00:00 2001 From: 叶松 <2217086471@qq.com> Date: 星期三, 29 十一月 2023 16:11:54 +0800 Subject: [PATCH] 增加打印功能 --- web/src/views/SecureManage/NipCheck/SafeExam.vue | 344 +++------------------------------------------------------ 1 files changed, 19 insertions(+), 325 deletions(-) diff --git a/web/src/views/SecureManage/NipCheck/SafeExam.vue b/web/src/views/SecureManage/NipCheck/SafeExam.vue index 49f2769..951c1c0 100644 --- a/web/src/views/SecureManage/NipCheck/SafeExam.vue +++ b/web/src/views/SecureManage/NipCheck/SafeExam.vue @@ -1,341 +1,31 @@ <template> - <div class="main tabs_main" v-if="!recordShow"> - <div class="main_header"> - <div class="header_item"> - <span class="header_label">考核名称:</span> - <el-input v-model="examineName" clearable placeholder="请输入考核名称"></el-input> - </div> - <div class="header_item"> - <span class="header_label">时间范围:</span> - <el-date-picker - v-model="timeData" - type="daterange" - range-separator="至" - start-placeholder="开始日期" - end-placeholder="结束日期" - value-format="yyyy-MM-dd"> - </el-date-picker> - </div> - <div class="header_item"> - <el-button v-if="showButton('search')" icon="el-icon-search" @click="searchSafetyExamineList(true)">查询</el-button> - <el-button class="search_btn" v-if="showButton('insert')" icon="el-icon-plus" @click="propInsert()">新增</el-button> - </div> + <div class="main"> + <div class="main_tabs"> + <el-tabs v-model="activeName"> + <el-tab-pane label="安全考核" name="first"></el-tab-pane> + <el-tab-pane label="安全考题" name="second"></el-tab-pane> + <el-tab-pane label="安全培训和日常培训制定" name="third"></el-tab-pane> + </el-tabs> </div> <div class="main_content"> - <el-table - v-loading="loading" - :data="examineList" - height="100%"> - <el-table-column label="序号" width="60" align="center"> - <template #default="scope"> - <span>{{(pageNum - 1) * pageSize + scope.$index + 1}}</span> - </template> - </el-table-column> - <el-table-column prop="examName" label="考核名称" width="180" align="center"></el-table-column> - <el-table-column prop="examDate" label="考核日期" align="center"></el-table-column> - <el-table-column prop="userCount" label="人数" align="center"></el-table-column> - <el-table-column label="操作" align="center"> - <template #default="{ row }"> - <el-button class="table_btn" size="mini" v-if="showButton('update')" @click="propUpdate(row)">修改</el-button> - <el-button class="delete_btn" size="mini" v-if="showButton('delete')" @click="deleteInfo(row)">删除</el-button> - <el-button class="table_btn" size="mini" v-if="showButton('delete')" @click="propRecord(row)">记录</el-button> - </template> - </el-table-column> - </el-table> + <component :is="activeName === 'first' ? 'SafetyExamine' :activeName === 'second'? 'SafetyTopic':'dailyEnact'"></component> </div> - <div class="main_footer"> - <el-pagination - background - @current-change="changePageNum" - @size-change="changePageSize" - :current-page="pageNum" - :page-sizes="[10, 20, 50, 100]" - :page-size="pageSize" - layout="total, sizes, prev, pager, next, jumper" - :total="total"> - </el-pagination> - </div> - <!-- 新增考核 修改考核信息 --> - <el-dialog - class="prop_dialog" - :title="asyncTitle ? '新增安全考核' : '修改安全考核信息'" - :visible.sync="asyncExamine" - width="35%"> - <el-form ref="form" :model="formExamine" :rules="rulesExamine" label-width="auto" class="rule_form"> - <el-form-item label="考核名称:" prop="examName"> - <el-input v-model="formExamine.examName" clearable placeholder="请输入考核名称"></el-input> - </el-form-item> - <el-form-item label="考题数量:" prop="questionCount"> - <el-input-number - v-model="formExamine.questionCount" - :controls="false" - :precision="0" - :min="0" - placeholder="请输入考题数量"> - </el-input-number> - </el-form-item> - <el-form-item label="合格分数:" prop="qualifiedScore"> - <el-input-number - v-model="formExamine.qualifiedScore" - :controls="false" - :min="0" - placeholder="请输入合格分数"> - </el-input-number> - </el-form-item> - <el-form-item label="考核日期:" prop="examDate"> - <el-date-picker - v-model="formExamine.examDate" - type="date" - clearable - value-format="yyyy-MM-dd" - placeholder="选择日期"> - </el-date-picker> - </el-form-item> - <el-form-item label="类型:" prop="examType"> - <el-select v-model="formExamine.examType" clearable placeholder="请选择类型" @change="getSecureTrainPull"> - <el-option - v-for="item in typeData" - :key="item.dictId" - :label="item.dictName" - :value="item.dictId"> - </el-option> - </el-select> - </el-form-item> - <el-form-item label="类型名称:" prop="trainId"> - <el-select v-model="formExamine.trainId" clearable placeholder="请选择类型名称"> - <el-option - v-for="item in typeNameData" - :key="item.secureId" - :label="item.secureName" - :value="item.secureId"> - </el-option> - </el-select> - </el-form-item> - </el-form> - <div slot="footer"> - <el-button @click="asyncExamine = false">取 消</el-button> - <el-button class="submit_btn" @click="asyncTitle ? submitInsertForm() : submitUpdateForm()">提 交</el-button> - </div> - </el-dialog> </div> - <examine-record v-else :examine-id.sync="examineId" :record-show.sync="recordShow"></examine-record> </template> <script> -import { buttonPinia } from '../../../pinia'; -import { throttle } from '../../../plugins/public'; -import ExamineRecord from './ExamineRecord.vue'; +import SafetyExamine from './components/SafetyExamine.vue'; // 安全考核 +import SafetyTopic from './components/SafetyTopic.vue'; // 安全考题 +import DailyEnact from './components/DailyEnact.vue'; // 安全培训和日常培训制定 export default { components: { - ExamineRecord + SafetyExamine, + SafetyTopic, + DailyEnact }, data() { return { - examineName: '', - timeData: '', - loading: false, - pageNum: 1, - pageSize: 10, - total: 0, - examineList: [], - asyncTitle: true, // true 新增 false 修改 - asyncExamine: false, // 弹窗 - formExamine: {}, // 表单信息 - rulesExamine: { - examName: [{ - required: true, - message: '请输入考核名称', - trigger: 'blur' - }], - questionCount: [{ - required: true, - message: '请输入考题数量', - trigger: 'blur' - }], - qualifiedScore: [{ - required: true, - message: '请输入合格分数', - trigger: 'blur' - }], - examDate: [{ - required: true, - message: '请选择考试日期', - trigger: ['blur', 'change'] - }], - examType: [{ - required: true, - message: '请选择类型', - trigger: ['blur', 'change'] - }], - trainId: [{ - required: true, - message: '请选择类型名称', - trigger: ['blur', 'change'] - }] - }, // 表单验证 - typeData: [], // 类型信息 - typeNameData: [], // 类型名称信息 - recordShow: false, // 记录 - examineId: '', - } - }, - mounted() { - this.searchSafetyExamineList(true); - }, - methods: { - // 获取类型信息 - async getExamineTypeData() { - const { data } = await this.$api.Dictionary.searchDictionary({ - dictType: 'train_type', - pageNum: 1, - pageSize: 100000 - }); - this.typeData = data.list; - }, - // 查询安全考核信息 - searchSafetyExamineList(bol) { - if(bol) { - this.pageNum = 1; - } - this.loading = true; - this.examineList = []; - this.$api.Safety.searchSafetyExamineList({ - pageNum: this.pageNum, - pageSize: this.pageSize, - examName: this.examineName, - startDay: this.timeData ? this.timeData[0] : '', - endDay: this.timeData ? this.timeData[1] : '' - }).then((res) => { - if(res.success) { - this.total = res.data.total; - this.examineList = res.data.list; - } - this.loading = false; - }).catch(() => { - this.loading = false; - }) - }, - // 打开添加信息 - propInsert() { - this.asyncTitle = true; - this.asyncExamine = true; - }, - // 打开修改信息 - propUpdate(row) { - this.$api.Safety.getAllSecureTrainPull({ - secureType: row.examType - }).then((res) => { - this.typeNameData = res.data; - }) - this.$set(this.formExamine, 'examId', row.examId); - this.$set(this.formExamine, 'examName', row.examName); - this.$set(this.formExamine, 'questionCount', row.questionCount); - this.$set(this.formExamine, 'qualifiedScore', row.qualifiedScore); - this.$set(this.formExamine, 'examDate', row.examDate); - this.$set(this.formExamine, 'examType', row.examType); - this.$set(this.formExamine, 'trainId', row.trainId); - this.asyncTitle = false; - this.asyncExamine = true; - }, - // 打开记录信息 - propRecord(row) { - this.examineId = row.examId; - this.recordShow = true; - }, - // 删除考核信息 - deleteInfo(row) { - this.$confirm("该操作将删除该考核信息,是否继续删除?", "提示", { - confirmButtonText: "确定", - cancelButtonText: "取消", - type: "warning" - }) - .then(() => { - this.$api.Safety.deleteSafetyExamineInfo({ - examId: row.examId - }).then(res => { - if(res.success) { - this.searchSafetyExamineList(true); - this.$message.success("删除成功!"); - } else { - this.$message.warning(res.statusMsg); - } - }) - }) - .catch(() => { - this.$message.warning("您已取消"); - }) - }, - // 提交添加信息 - submitInsertForm: throttle(function () { - this.$refs.form.validate((valid) => { - if(valid) { - const params = Object.assign({}, this.formExamine); - this.$api.Safety.insertSafetyExamineInfo(params).then((res) => { - if(res.success) { - this.asyncExamine = false; - this.searchSafetyExamineList(true); - this.$message.success('添加成功!'); - } else { - this.$message.warning(res.statusMsg); - } - }) - } - }) - }, 3000), - // 提交修改信息 - submitUpdateForm: throttle(function() { - this.$refs.form.validate((valid) => { - if(valid) { - const params = Object.assign({}, this.formExamine); - this.$api.Safety.insertSafetyExamineInfo(params).then((res) => { - if(res.success) { - this.asyncExamine = false; - this.searchSafetyExamineList(true); - this.$message.success('修改成功!'); - } else { - this.$message.warning(res.statusMsg); - } - }) - } - }) - }, 3000), - // 根据类型获取类型名称信息 - getSecureTrainPull(data) { - this.typeNameData = []; - if(data) { - this.$api.Safety.getAllSecureTrainPull({ - secureType: data - }).then((res) => { - this.typeNameData = res.data; - }) - } else { - this.$set(this.formExamine, 'trainId', ''); - } - }, - // 切换页码 - changePageNum(page) { - this.pageNum = page; - this.searchSafetyExamineList(); - }, - // 切换每页条数 - changePageSize(size) { - this.pageSize = size; - this.searchSafetyExamineList(); - }, - // 判断按钮权限信息 - showButton(str) { - const pinia = buttonPinia(); - return pinia.$state.buttonInfo.includes(str); - } - }, - watch: { - asyncExamine(bol) { - if(bol) { - this.getExamineTypeData(); - } else { - this.formExamine = {}; - this.$refs.form.resetFields(); - } + activeName: 'first' } } } @@ -343,4 +33,8 @@ <style lang="scss" scoped> @import '@/style/layout-main.scss'; + +/deep/.main { + background: none; +} </style> \ No newline at end of file -- Gitblit v1.9.3