|
@@ -0,0 +1,333 @@
|
|
|
|
+<!--检查内容统计列表-->
|
|
|
|
+<template>
|
|
|
|
+ <div class="safetyHazardStatistics">
|
|
|
|
+ <el-form :model="queryParams" class="form-box" ref="queryForm" :inline="true">
|
|
|
|
+ <el-form-item label="" prop="rectifyStatus">
|
|
|
|
+ <el-select v-model="queryParams.hazardTypeMode" clearable placeholder="全部检查内容">
|
|
|
|
+ <el-option
|
|
|
|
+ v-for="item in materialTypeList"
|
|
|
|
+ :key="item.dictValue"
|
|
|
|
+ :label="item.dictLabel"
|
|
|
|
+ :value="item.dictValue">
|
|
|
|
+ </el-option>
|
|
|
|
+ </el-select>
|
|
|
|
+ </el-form-item>
|
|
|
|
+ <el-form-item label="" prop="deptId" label-width="50px">
|
|
|
|
+ <el-select v-model="queryParams.deptId" @change="handleNodeClick" clearable placeholder="全部学院">
|
|
|
|
+ <el-option
|
|
|
|
+ v-for="item in deptSelectList"
|
|
|
|
+ :key="item.deptId"
|
|
|
|
+ :label="item.deptName"
|
|
|
|
+ :value="item.deptId">
|
|
|
|
+ </el-option>
|
|
|
|
+ </el-select>
|
|
|
|
+ </el-form-item>
|
|
|
|
+ <el-form-item label="" prop="subId" label-width="58px">
|
|
|
|
+ <el-select v-model="queryParams.subId" placeholder="请选择实验室">
|
|
|
|
+ <el-option
|
|
|
|
+ v-for="item in subjectOptions"
|
|
|
|
+ :key="item.id"
|
|
|
|
+ :label="item.name"
|
|
|
|
+ :value="item.id">
|
|
|
|
+ </el-option>
|
|
|
|
+ </el-select>
|
|
|
|
+ </el-form-item>
|
|
|
|
+ <el-form-item label="" prop="dateRange" label-width="70px">
|
|
|
|
+ <el-date-picker
|
|
|
|
+ :clearable="false"
|
|
|
|
+ v-model="dateRange"
|
|
|
|
+ size="small"
|
|
|
|
+ style="width: 240px"
|
|
|
|
+ value-format="yyyy-MM-dd"
|
|
|
|
+ type="daterange"
|
|
|
|
+ range-separator="-"
|
|
|
|
+ start-placeholder="开始日期"
|
|
|
|
+ end-placeholder="结束日期"
|
|
|
|
+ ></el-date-picker>
|
|
|
|
+ </el-form-item>
|
|
|
|
+ <el-form-item>
|
|
|
|
+ <p class="inquire-button-one" @click="handleQuery" style="margin-right:10px;">查询</p>
|
|
|
|
+ <p class="reset-button-one" @click="resetQuery">重置</p>
|
|
|
|
+ </el-form-item>
|
|
|
|
+ <el-form-item style="float: right;" v-hasPermi="['safety:dataSub:export']">
|
|
|
|
+ <el-dropdown @command="exportButton">
|
|
|
|
+ <div class="form-dropdown-box">
|
|
|
|
+ <img src="@/assets/ZDimages/personnelManagement/icon_jzgxx_sc.png">
|
|
|
|
+ <p>导出</p>
|
|
|
|
+ <img src="@/assets/ZDimages/personnelManagement/icon_jzggl_xljt.png">
|
|
|
|
+ </div>
|
|
|
|
+ <el-dropdown-menu slot="dropdown">
|
|
|
|
+ <el-dropdown-item style="border-bottom:1px solid #E0E0E0;margin:0 10px;color:#333;" :command="{command:1}">导出全部数据</el-dropdown-item>
|
|
|
|
+ <el-dropdown-item style="margin:0 10px;color:#333;" :command="{command:2}">导出选中数据</el-dropdown-item>
|
|
|
|
+ </el-dropdown-menu>
|
|
|
|
+ </el-dropdown>
|
|
|
|
+ </el-form-item>
|
|
|
|
+ </el-form>
|
|
|
|
+ <div class="num-data-box">
|
|
|
|
+ 共搜索到隐患总数 {{numData.numData}},已整改数 {{numData.sumYzg}}, 未整改数 {{numData.sumWzg}},整改率 {{numData.rate}}
|
|
|
|
+ </div>
|
|
|
|
+ <el-table border :data="tableList" ref="multipleTable"
|
|
|
|
+ :row-key="getRowKeys"
|
|
|
|
+ @select="select" @select-all="selectAll">
|
|
|
|
+ <el-table-column type="selection" width="50" align="center" fixed/>
|
|
|
|
+ <el-table-column label="序号" align="center" type="index" width="60" fixed/>
|
|
|
|
+ <el-table-column label="检查内容" align="center" prop="hazardTypeModeName" show-overflow-tooltip width="200" fixed/>
|
|
|
|
+ <el-table-column label="学院" align="center" prop="collegeName" show-overflow-tooltip width="200" fixed/>
|
|
|
|
+ <el-table-column label="实验室" align="center" prop="subjectName" show-overflow-tooltip width="180"/>
|
|
|
|
+ <el-table-column label="隐患总数" align="center" prop="sumTotal" show-overflow-tooltip width="100"/>
|
|
|
|
+ <el-table-column label="隐患占比" align="center" prop="percent" show-overflow-tooltip width="180"/>
|
|
|
|
+ <el-table-column label="已整改" align="center" prop="sumYzg" show-overflow-tooltip width="180"/>
|
|
|
|
+ <el-table-column label="未整改" align="center" prop="sumWzg" show-overflow-tooltip width="180"/>
|
|
|
|
+ <el-table-column label="整改率" align="center" prop="percent2" show-overflow-tooltip width="180"/>
|
|
|
|
+ </el-table>
|
|
|
|
+ <pagination :page-sizes="[20, 30, 40, 50]"
|
|
|
|
+ v-show="total>0"
|
|
|
|
+ :total="total"
|
|
|
|
+ :page.sync="queryParams.pageNum"
|
|
|
|
+ :limit.sync="queryParams.pageSize"
|
|
|
|
+ @pagination="getList"
|
|
|
|
+ />
|
|
|
|
+ </div>
|
|
|
|
+</template>
|
|
|
|
+
|
|
|
|
+<script>
|
|
|
|
+ import { listDepartments } from "@/api/system/dept";
|
|
|
|
+ import { dataStatisticsContentList,dataStatisticsContentListTop } from "@/api/safetyCheck/index";
|
|
|
|
+ import { dangerList } from '@/api/gasManage3_0/gasManage'
|
|
|
|
+ import { subjectDictList } from '@/api/laboratory/record'
|
|
|
|
+ export default {
|
|
|
|
+ name: 'safetyHazardStatistics',
|
|
|
|
+ data(){
|
|
|
|
+ return{
|
|
|
|
+ deptSelectList:[],
|
|
|
|
+ materialTypeList:[],
|
|
|
|
+ subjectOptions:[],
|
|
|
|
+ levelList:[{label:"一般隐患",key:"2"},{label:"重大隐患",key:"1"},{label:"管理问题",key:"3"}],
|
|
|
|
+ dateRange:[],
|
|
|
|
+ queryParams:{
|
|
|
|
+ pageNum:1,
|
|
|
|
+ pageSize:20,
|
|
|
|
+ hazardTypeMode:"",
|
|
|
|
+ deptId:"",
|
|
|
|
+ subId:"",
|
|
|
|
+ },
|
|
|
|
+ setChildren:"",
|
|
|
|
+ numData:{},
|
|
|
|
+ tableList:[],
|
|
|
|
+ total:0,
|
|
|
|
+ }
|
|
|
|
+ },
|
|
|
|
+ created(){
|
|
|
|
+
|
|
|
|
+ },
|
|
|
|
+ mounted(){
|
|
|
|
+ this.dangerList();
|
|
|
|
+ this.initializationInterface();
|
|
|
|
+ this.getList();
|
|
|
|
+ },
|
|
|
|
+ methods:{
|
|
|
|
+ initializationInterface(){
|
|
|
|
+ //获取学院列表
|
|
|
|
+ listDepartments().then(response => {
|
|
|
|
+ this.deptSelectList = response.data;
|
|
|
|
+ });
|
|
|
|
+ },
|
|
|
|
+ //获取危险源类型
|
|
|
|
+ dangerList(){
|
|
|
|
+ let _this=this;
|
|
|
|
+ dangerList().then( response => {
|
|
|
|
+ let res=response.rows;
|
|
|
|
+ _this.materialTypeList=res;
|
|
|
|
+ });
|
|
|
|
+ },
|
|
|
|
+ // 节点单击事件
|
|
|
|
+ handleNodeClick(data) {
|
|
|
|
+ this.queryParams.deptId = data;
|
|
|
|
+ this.getSubjectDictList(data);
|
|
|
|
+ },
|
|
|
|
+ /** 查询实验室字典列表 */
|
|
|
|
+ getSubjectDictList (deptId) {
|
|
|
|
+ this.subjectOptions = null;
|
|
|
|
+ this.loading = true;
|
|
|
|
+ let params = {};
|
|
|
|
+ params.deptId = deptId;
|
|
|
|
+ this.queryParams.subId = "";
|
|
|
|
+ subjectDictList(params).then(response => {
|
|
|
|
+ this.subjectOptions = response.data;
|
|
|
|
+ this.loading = false;
|
|
|
|
+ });
|
|
|
|
+ },
|
|
|
|
+ //获取数据列表
|
|
|
|
+ getList(){
|
|
|
|
+ let obj = JSON.parse(JSON.stringify(this.queryParams))
|
|
|
|
+ if(this.dateRange[0]){
|
|
|
|
+ obj.beginTime = this.dateRange[0];
|
|
|
|
+ }else{
|
|
|
|
+ obj.beginTime = "";
|
|
|
|
+ }
|
|
|
|
+ if(this.dateRange[1]){
|
|
|
|
+ obj.endTime = this.dateRange[1];
|
|
|
|
+ }else{
|
|
|
|
+ obj.endTime = "";
|
|
|
|
+ }
|
|
|
|
+ dataStatisticsContentList(obj).then(response => {
|
|
|
|
+ this.total = response.data.total;
|
|
|
|
+ this.tableList = response.data.records;
|
|
|
|
+ });
|
|
|
|
+ dataStatisticsContentListTop(obj).then(response => {
|
|
|
|
+ this.$set(this,'numData',response.data);
|
|
|
|
+ });
|
|
|
|
+ },
|
|
|
|
+ /** 搜索按钮操作 */
|
|
|
|
+ handleQuery() {
|
|
|
|
+ this.$set(this.queryParams,'pageNum',1);
|
|
|
|
+ this.getList();
|
|
|
|
+ },
|
|
|
|
+ /** 重置按钮操作 */
|
|
|
|
+ resetQuery() {
|
|
|
|
+ this.$set(this,'dateRange',[]);
|
|
|
|
+ this.$set(this,'queryParams',{
|
|
|
|
+ pageNum:1,
|
|
|
|
+ pageSize:20,
|
|
|
|
+ hazardTypeMode:"",
|
|
|
|
+ deptId:"",
|
|
|
|
+ subId:"",
|
|
|
|
+ });
|
|
|
|
+ this.handleQuery();
|
|
|
|
+ },
|
|
|
|
+ /** 导出按钮操作 */
|
|
|
|
+ exportButton(item) {
|
|
|
|
+ let self = this;
|
|
|
|
+ if(item.command == 1){
|
|
|
|
+ self.$confirm(`确认导出全部数据?`, "提示", {
|
|
|
|
+ confirmButtonText: "确定",
|
|
|
|
+ cancelButtonText: "取消",
|
|
|
|
+ type: "warning"
|
|
|
|
+ }).then(async () => {
|
|
|
|
+ self.download('/zd-security/DataStatistics/contentExport/', {}, '检查内容统计.xlsx')
|
|
|
|
+ }).catch(() => {})
|
|
|
|
+ }else if(item.command == 2){
|
|
|
|
+ let list = self.$refs.multipleTable.selection;
|
|
|
|
+ let ids = [];
|
|
|
|
+ for(let i=0;i<list.length;i++){
|
|
|
|
+ ids.push(list[i].id)
|
|
|
|
+ }
|
|
|
|
+ if(ids.length>0) {
|
|
|
|
+ self.$confirm(`确认导出选中数据?`, "提示", {
|
|
|
|
+ confirmButtonText: "确定",
|
|
|
|
+ cancelButtonText: "取消",
|
|
|
|
+ type: "warning"
|
|
|
|
+ }).then(async () => {
|
|
|
|
+ self.download(`/zd-security/DataStatistics/contentExport/?ids=`+ids,{}, '检查内容统计.xlsx')
|
|
|
|
+ this.$refs.multipleTable.clearSelection();
|
|
|
|
+ }).catch(() => {})
|
|
|
|
+ }else {
|
|
|
|
+ this.msgError('请选择要导出的数据')
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ },
|
|
|
|
+ /*===记录勾选数据===
|
|
|
|
+ 需要再el-table 添加 :row-key="getRowKeys"
|
|
|
|
+ 需要在selection 添加 :reserve-selection="true"
|
|
|
|
+ */
|
|
|
|
+ getRowKeys(row) {
|
|
|
|
+ return row.id
|
|
|
|
+ },
|
|
|
|
+ // 单选
|
|
|
|
+ select (selection, row) {
|
|
|
|
+ if (selection.some(el => { return row.id === el.id })) {
|
|
|
|
+ if (row.children) {
|
|
|
|
+ this.setChildren(row.children, true)
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ if (row.children) {
|
|
|
|
+ this.setChildren(row.children, false)
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ },
|
|
|
|
+ // 全选
|
|
|
|
+ selectAll (selection) {
|
|
|
|
+ const isSelect = selection.some(el => {
|
|
|
|
+ const tableDataIds = this.tableData.map(j => j.id)
|
|
|
|
+ return tableDataIds.includes(el.id)
|
|
|
|
+ })
|
|
|
|
+ const isCancel = !this.tableData.every(el => {
|
|
|
|
+ const selectIds = selection.map(j => j.id)
|
|
|
|
+ return selectIds.includes(el.id)
|
|
|
|
+ })
|
|
|
|
+ if (isSelect) {
|
|
|
|
+ selection.map(el => {
|
|
|
|
+ if (el.children) {
|
|
|
|
+ this.setChildren(el.children, true)
|
|
|
|
+ }
|
|
|
|
+ })
|
|
|
|
+ }
|
|
|
|
+ if (isCancel) {
|
|
|
|
+ this.tableData.map(el => {
|
|
|
|
+ if (el.children) {
|
|
|
|
+ this.setChildren(el.children, false)
|
|
|
|
+ }
|
|
|
|
+ })
|
|
|
|
+ }
|
|
|
|
+ },
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+</script>
|
|
|
|
+
|
|
|
|
+<style scoped lang="scss">
|
|
|
|
+ ::v-deep .el-table__body-wrapper{
|
|
|
|
+ padding-bottom: 8px;
|
|
|
|
+ }
|
|
|
|
+ ::v-deep .el-table__fixed{
|
|
|
|
+ margin-top:-1px;
|
|
|
|
+ margin-left:-1px;
|
|
|
|
+ height:calc(100% - 8px)!important;
|
|
|
|
+ }
|
|
|
|
+ ::v-deep .el-table__fixed-body-wrapper{
|
|
|
|
+ height: calc(100% - 48px);
|
|
|
|
+ overflow-y: auto;
|
|
|
|
+ }
|
|
|
|
+ .safetyHazardStatistics{
|
|
|
|
+ flex:1;
|
|
|
|
+ display: flex;
|
|
|
|
+ flex-direction: column;
|
|
|
|
+ overflow: hidden;
|
|
|
|
+ padding:20px;
|
|
|
|
+ .form-box{
|
|
|
|
+ .form-dropdown-box{
|
|
|
|
+ display: flex;
|
|
|
|
+ margin:0;
|
|
|
|
+ padding:0 10px;
|
|
|
|
+ cursor: pointer;
|
|
|
|
+ height:40px;
|
|
|
|
+ img:nth-child(1){
|
|
|
|
+ width:16px;
|
|
|
|
+ height:16px;
|
|
|
|
+ margin-top:12px;
|
|
|
|
+ }
|
|
|
|
+ p{
|
|
|
|
+ width:47px;
|
|
|
|
+ text-align: center;
|
|
|
|
+ font-size:14px;
|
|
|
|
+ margin:0;
|
|
|
|
+ line-height:40px;
|
|
|
|
+ }
|
|
|
|
+ img:nth-child(3){
|
|
|
|
+ width:10px;
|
|
|
|
+ height:6px;
|
|
|
|
+ margin-top:17px;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ .num-data-box{
|
|
|
|
+ background: rgba(1,131,250,0.2);
|
|
|
|
+ color:#0183FA;
|
|
|
|
+ font-size:14px;
|
|
|
|
+ line-height:40px;
|
|
|
|
+ padding:0 20px;
|
|
|
|
+ border-radius:4px;
|
|
|
|
+ margin-bottom:20px;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+</style>
|