heyang 1 vuosi sitten
vanhempi
commit
67158c72bc

+ 16 - 1
src/api/safetyCheck/index.js

@@ -645,7 +645,22 @@ export function dataStatisticsItemsList(query) {
   })
 }
 
-
+//数据统计-按检查内容查询列表
+export function dataStatisticsContentList(query) {
+  return request({
+    url: '/zd-security/DataStatistics/contentList',
+    method: 'get',
+    params: query
+  })
+}
+//数据统计-按检查内容头部数据汇总
+export function dataStatisticsContentListTop(query) {
+  return request({
+    url: '/zd-security/DataStatistics/hazardContentTop',
+    method: 'get',
+    params: query
+  })
+}
 
 
 

+ 8 - 1
src/views/safetyCheck/dataStatistics/index.vue

@@ -13,10 +13,15 @@
         <p>按检查指标</p>
         <p></p>
       </div>
+      <div :class="pageType == 4?'checkTitle':''" @click="checkTitleButton(4)">
+        <p>按检查内容</p>
+        <p></p>
+      </div>
     </div>
     <laboratoryStatistics v-if="pageType == 1"></laboratoryStatistics>
     <safetyHazardStatistics v-if="pageType == 2"></safetyHazardStatistics>
     <checkIndexStatistics v-if="pageType == 3" :propsData="propsData"></checkIndexStatistics>
+    <inspectContent v-if="pageType == 4" ></inspectContent>
   </div>
 </template>
 
@@ -24,12 +29,14 @@
   import laboratoryStatistics from './laboratoryStatistics.vue'
   import safetyHazardStatistics from './safetyHazardStatistics.vue'
   import checkIndexStatistics from './checkIndexStatistics.vue'
+  import inspectContent from './inspectContent.vue'
   export default {
     name: 'index',
     components: {
       laboratoryStatistics,
       safetyHazardStatistics,
-      checkIndexStatistics
+      checkIndexStatistics,
+      inspectContent
     },
     data(){
       return{

+ 333 - 0
src/views/safetyCheck/dataStatistics/inspectContent.vue

@@ -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>

+ 37 - 14
src/views/safetyCheck/equipmentConfig/index.vue

@@ -90,7 +90,8 @@
         <div style="height: 300px;overflow-y: auto">
           <el-form-item label="">
             <el-tree
-              :data="cascaderData"
+              ref="tree"
+              :data="cascaderTreeData"
               :props="defaultProps"
               show-checkbox
               node-key="id"
@@ -157,14 +158,15 @@ export default {
       },
       //检查项
       cascaderData:[],
+      cascaderTreeData:[],
       cascaderDataPrimitive:[],
       dangerArr:[],//危险源类型
       materialTypeList:[],//检查内容
       // 表单校验
       rules: {
         joinCheckOpList: [
-          { required: true, message: "请选择上级指标", trigger: "change" },
-          { required: true, message: "请选择上级指标", validator: this.spaceJudgment, trigger: "change" },
+          { required: true, message: "请选择", trigger: "change" },
+          { required: true, message: "请选择", validator: this.spaceJudgment, trigger: "change" },
         ],
         name: [
           { required: true, message: "请输入检查项目内容", trigger: "change" },
@@ -213,21 +215,29 @@ export default {
     handleClick(index,row,doType){
       let _this=this;
       if(doType=='add'){//新增
+        this.$set(this,'addDialogType',true);
+
         this.$set(this,'addDialogTitle','新增检查项');
         this.$set(this,'addDialogForm',{
           joinHazardReid:'',
           joinCheckOpList:[],
         });
-        this.cascaderCheckedData=[];
         this.inspectContentList()//检查内容
-        this.$set(this,'addDialogType',true);
-
+        this.$nextTick(function () {
+          //Dom更新完毕
+          this.$refs.tree.setCheckedKeys([]);
+        });
       }else if(doType=='detail'){//详情
 
       }else if(doType=='edit'){//编辑
+        this.$set(this,'addDialogType',true);
+        this.$set(this,'addDialogTitle','编辑检查项');
         this.getInfo(row.id)
         this.inspectContentList(row.id)//检查内容
-        this.$set(this,'addDialogType',true);
+        this.$nextTick(function () {
+          //Dom更新完毕
+          this.$refs.tree.setCheckedKeys([]);
+        });
 
       }else if(doType=='delete'){//删除
         this.$confirm('是否确认删除?', "警告", {
@@ -250,12 +260,7 @@ export default {
     },
     //联级选中
     cascaderCheck(val){
-      // let obj = this.cascaderCheckData(val,this.cascaderDataPrimitive);
-      // this.$set(this.addDialogForm,'code',obj.key);
-      // this.getCodeButton(this.cascaderDataPrimitive,obj.parentId,val);
-      // this.$set(this,'addDialogLevel',obj.level);
-      console.log(val)
-      this.addDialogForm.joinCheckOpList=val
+
     },
     /** 搜索按钮操作 */
     handleQuery() {
@@ -266,7 +271,7 @@ export default {
     resetQuery() {
       this.queryParams.searchValue = "";
       this.queryParams.hazardType='',
-      this.handleQuery();
+        this.handleQuery();
     },
     /** 查询检查项选项列表 */
     checkOptionList() {
@@ -274,8 +279,10 @@ export default {
       checkOptionList(this.queryParams).then( response => {
         let list=JSON.parse(JSON.stringify(response.data))
         this.$set(this,'cascaderData',list);
+        this.$set(this,'cascaderTreeData',JSON.parse(JSON.stringify(list)));
         this.$set(this,'cascaderDataPrimitive',JSON.parse(JSON.stringify(list)));
         this.getCascaderData(this.cascaderData);
+        this.getCascaderTreeData(this.cascaderTreeData);
         this.loading = false;
       });
     },
@@ -291,6 +298,19 @@ export default {
         }
       }
     },
+    //树形选择器数据处理
+    getCascaderTreeData(list){
+      let self = this;
+      for(let i=0;i<list.length;i++){
+        list[i].labelName = list[i].code? list[i].code +' '+ list[i].name:list[i].name
+        list[i].disabled = true;
+        if(list[i].level == 1 || list[i].level == 2 || list[i].level == 3){
+          self.getCascaderTreeData(list[i].children)
+        }else{
+          delete list[i].children
+        }
+      }
+    },
     //获取危险源类型
     dangerList(){
       let _this=this;
@@ -388,6 +408,9 @@ export default {
 .approval_handle {
   display: flex!important;
   flex-direction: column;
+  .goods-category-cascader-stocking-page .el-cascader-menu:nth-of-type(1) .el-checkbox__input {
+    display: none !important;
+  }
   .approval_handle-page{
     flex:1;
     display: flex!important;

+ 1 - 0
src/views/safetyCheck/startInspection/index.vue

@@ -560,6 +560,7 @@
                     return
                   }
                   for(let i=0;i<obj.checkHazardDtoList.length;i++){
+                    obj.checkHazardDtoList[i].checkCategory=this.addForm.checkCategory;
                     delete obj.checkHazardDtoList[i].lookType
                   }
                   obj.dangerNum = obj.checkHazardDtoList.length