Commit 533635b6 authored by 王晓倩's avatar 王晓倩

统计分析

parent 6108d0c0
package com.zehong.web.controller.statistic;
import com.zehong.common.config.GassafetyProgressConfig;
import com.zehong.common.constant.Constants;
import com.zehong.common.core.domain.AjaxResult;
import com.zehong.common.utils.StringUtils;
import com.zehong.common.utils.file.FileUploadUtils;
import com.zehong.common.utils.file.FileUtils;
import com.zehong.framework.config.ServerConfig;
import com.zehong.system.domain.THiddenDangerStandingBook;
import com.zehong.system.domain.TTroubleStandingBook;
import com.zehong.system.domain.form.THiddenDangerStandingBookForm;
import com.zehong.system.domain.form.TTroubleStandingBookForm;
import com.zehong.system.domain.vo.THiddenDangerStandingBookVo;
import com.zehong.system.domain.vo.TTroubleStandingBookVo;
import com.zehong.system.service.ITHiddenDangerStandingBookService;
import com.zehong.system.service.ITTroubleStandingBookService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.MediaType;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.List;
/**
* 统计分析
*
* @author zehong
*/
@RestController
@RequestMapping("/statistic")
public class StatisticController
{
private static final Logger log = LoggerFactory.getLogger(StatisticController.class);
@Autowired
private ITTroubleStandingBookService tTroubleStandingBookService;
@Autowired
private ITHiddenDangerStandingBookService tHiddenDangerStandingBookService;
/**
* 燃气事故台账统计
*/
@GetMapping("/troubleStatistic")
public AjaxResult troubleStatistic()
{
return AjaxResult.success(tTroubleStandingBookService.selectTTroubleStandingBookStatistic());
}
/**
* 隐患整治台账统计
*/
@GetMapping("/hiddenStatistic")
public AjaxResult hiddenStatistic()
{
return AjaxResult.success(tHiddenDangerStandingBookService.selectTHiddenDangerStandingBookStatistic());
}
}
package com.zehong.system.domain.vo;
import lombok.Data;
@Data
public class THiddenDangerStandingBookVo
{
// 隐患总数
private int hiddenTotal;
// 一级隐患总数
private int oneLevelTotal;
// 二级隐患总数
private int twoLevelTotal;
// 三级隐患总数
private int threeLevelTotal;
// 已完成总数
private int completedTotal;
// 未完成总数
private int incompleteTotal;
}
package com.zehong.system.domain.vo;
import lombok.Data;
@Data
public class TTroubleStandingBookVo
{
// 事故总数
private int troubleTotal;
// 受伤总数
private int injuryTotal;
// 死亡总数
private int deathTotal;
// 事故处理办结率
private String completionRate;
}
...@@ -3,6 +3,7 @@ package com.zehong.system.mapper; ...@@ -3,6 +3,7 @@ package com.zehong.system.mapper;
import java.util.List; import java.util.List;
import com.zehong.system.domain.THiddenDangerStandingBook; import com.zehong.system.domain.THiddenDangerStandingBook;
import com.zehong.system.domain.form.THiddenDangerStandingBookForm; import com.zehong.system.domain.form.THiddenDangerStandingBookForm;
import com.zehong.system.domain.vo.THiddenDangerStandingBookVo;
/** /**
* 隐患整治台账Mapper接口 * 隐患整治台账Mapper接口
...@@ -28,6 +29,13 @@ public interface THiddenDangerStandingBookMapper ...@@ -28,6 +29,13 @@ public interface THiddenDangerStandingBookMapper
*/ */
public List<THiddenDangerStandingBook> selectTHiddenDangerStandingBookList(THiddenDangerStandingBookForm tHiddenDangerStandingBook); public List<THiddenDangerStandingBook> selectTHiddenDangerStandingBookList(THiddenDangerStandingBookForm tHiddenDangerStandingBook);
/**
* 隐患台账统计
*
* @return 隐患整治台账集合
*/
public THiddenDangerStandingBookVo selectTHiddenDangerStandingBookStatistic();
/** /**
* 新增隐患整治台账 * 新增隐患整治台账
* *
......
...@@ -3,6 +3,7 @@ package com.zehong.system.mapper; ...@@ -3,6 +3,7 @@ package com.zehong.system.mapper;
import java.util.List; import java.util.List;
import com.zehong.system.domain.TTroubleStandingBook; import com.zehong.system.domain.TTroubleStandingBook;
import com.zehong.system.domain.form.TTroubleStandingBookForm; import com.zehong.system.domain.form.TTroubleStandingBookForm;
import com.zehong.system.domain.vo.TTroubleStandingBookVo;
/** /**
* 事故台账Mapper接口 * 事故台账Mapper接口
...@@ -28,6 +29,13 @@ public interface TTroubleStandingBookMapper ...@@ -28,6 +29,13 @@ public interface TTroubleStandingBookMapper
*/ */
public List<TTroubleStandingBook> selectTTroubleStandingBookList(TTroubleStandingBookForm tTroubleStandingBook); public List<TTroubleStandingBook> selectTTroubleStandingBookList(TTroubleStandingBookForm tTroubleStandingBook);
/**
* 事故台账统计
*
* @return 事故台账统计
*/
public TTroubleStandingBookVo selectTTroubleStandingBookStatistic();
/** /**
* 新增事故台账 * 新增事故台账
* *
......
...@@ -3,6 +3,7 @@ package com.zehong.system.service; ...@@ -3,6 +3,7 @@ package com.zehong.system.service;
import java.util.List; import java.util.List;
import com.zehong.system.domain.THiddenDangerStandingBook; import com.zehong.system.domain.THiddenDangerStandingBook;
import com.zehong.system.domain.form.THiddenDangerStandingBookForm; import com.zehong.system.domain.form.THiddenDangerStandingBookForm;
import com.zehong.system.domain.vo.THiddenDangerStandingBookVo;
/** /**
* 隐患整治台账Service接口 * 隐患整治台账Service接口
...@@ -28,6 +29,13 @@ public interface ITHiddenDangerStandingBookService ...@@ -28,6 +29,13 @@ public interface ITHiddenDangerStandingBookService
*/ */
public List<THiddenDangerStandingBook> selectTHiddenDangerStandingBookList(THiddenDangerStandingBookForm tHiddenDangerStandingBook); public List<THiddenDangerStandingBook> selectTHiddenDangerStandingBookList(THiddenDangerStandingBookForm tHiddenDangerStandingBook);
/**
* 隐患台账统计
*
* @return 隐患整治台账集合
*/
public THiddenDangerStandingBookVo selectTHiddenDangerStandingBookStatistic();
/** /**
* 新增隐患整治台账 * 新增隐患整治台账
* *
......
...@@ -3,6 +3,7 @@ package com.zehong.system.service; ...@@ -3,6 +3,7 @@ package com.zehong.system.service;
import java.util.List; import java.util.List;
import com.zehong.system.domain.TTroubleStandingBook; import com.zehong.system.domain.TTroubleStandingBook;
import com.zehong.system.domain.form.TTroubleStandingBookForm; import com.zehong.system.domain.form.TTroubleStandingBookForm;
import com.zehong.system.domain.vo.TTroubleStandingBookVo;
/** /**
* 事故台账Service接口 * 事故台账Service接口
...@@ -28,6 +29,13 @@ public interface ITTroubleStandingBookService ...@@ -28,6 +29,13 @@ public interface ITTroubleStandingBookService
*/ */
public List<TTroubleStandingBook> selectTTroubleStandingBookList(TTroubleStandingBookForm tTroubleStandingBook); public List<TTroubleStandingBook> selectTTroubleStandingBookList(TTroubleStandingBookForm tTroubleStandingBook);
/**
* 事故台账统计
*
* @return 事故台账统计
*/
public TTroubleStandingBookVo selectTTroubleStandingBookStatistic();
/** /**
* 新增事故台账 * 新增事故台账
* *
......
...@@ -3,6 +3,7 @@ package com.zehong.system.service.impl; ...@@ -3,6 +3,7 @@ package com.zehong.system.service.impl;
import java.util.List; import java.util.List;
import com.zehong.common.utils.DateUtils; import com.zehong.common.utils.DateUtils;
import com.zehong.system.domain.form.THiddenDangerStandingBookForm; import com.zehong.system.domain.form.THiddenDangerStandingBookForm;
import com.zehong.system.domain.vo.THiddenDangerStandingBookVo;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import com.zehong.system.mapper.THiddenDangerStandingBookMapper; import com.zehong.system.mapper.THiddenDangerStandingBookMapper;
...@@ -45,6 +46,16 @@ public class THiddenDangerStandingBookServiceImpl implements ITHiddenDangerStand ...@@ -45,6 +46,16 @@ public class THiddenDangerStandingBookServiceImpl implements ITHiddenDangerStand
return tHiddenDangerStandingBookMapper.selectTHiddenDangerStandingBookList(tHiddenDangerStandingBook); return tHiddenDangerStandingBookMapper.selectTHiddenDangerStandingBookList(tHiddenDangerStandingBook);
} }
/**
* 隐患台账统计
*
* @return 隐患整治台账集合
*/
public THiddenDangerStandingBookVo selectTHiddenDangerStandingBookStatistic()
{
return tHiddenDangerStandingBookMapper.selectTHiddenDangerStandingBookStatistic();
}
/** /**
* 新增隐患整治台账 * 新增隐患整治台账
* *
......
...@@ -3,6 +3,7 @@ package com.zehong.system.service.impl; ...@@ -3,6 +3,7 @@ package com.zehong.system.service.impl;
import java.util.List; import java.util.List;
import com.zehong.common.utils.DateUtils; import com.zehong.common.utils.DateUtils;
import com.zehong.system.domain.form.TTroubleStandingBookForm; import com.zehong.system.domain.form.TTroubleStandingBookForm;
import com.zehong.system.domain.vo.TTroubleStandingBookVo;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import com.zehong.system.mapper.TTroubleStandingBookMapper; import com.zehong.system.mapper.TTroubleStandingBookMapper;
...@@ -45,6 +46,17 @@ public class TTroubleStandingBookServiceImpl implements ITTroubleStandingBookSer ...@@ -45,6 +46,17 @@ public class TTroubleStandingBookServiceImpl implements ITTroubleStandingBookSer
return tTroubleStandingBookMapper.selectTTroubleStandingBookList(tTroubleStandingBook); return tTroubleStandingBookMapper.selectTTroubleStandingBookList(tTroubleStandingBook);
} }
/**
* 事故台账统计
*
* @return 事故台账统计
*/
@Override
public TTroubleStandingBookVo selectTTroubleStandingBookStatistic()
{
return tTroubleStandingBookMapper.selectTTroubleStandingBookStatistic();
}
/** /**
* 新增事故台账 * 新增事故台账
* *
......
...@@ -38,6 +38,17 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" ...@@ -38,6 +38,17 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="hiddenFindDateStart != null "> and hidden_find_date &gt;= #{hiddenFindDateStart}</if> <if test="hiddenFindDateStart != null "> and hidden_find_date &gt;= #{hiddenFindDateStart}</if>
<if test="hiddenFindDateEnd != null "> and hidden_find_date &lt;= #{hiddenFindDateEnd}</if> <if test="hiddenFindDateEnd != null "> and hidden_find_date &lt;= #{hiddenFindDateEnd}</if>
</where> </where>
order by create_time desc
</select>
<select id="selectTHiddenDangerStandingBookStatistic" resultType="THiddenDangerStandingBookVo">
select COUNT(t.hidden_id) AS hiddenTotal,
SUM(CASE t.hidden_type WHEN '1' THEN 1 ELSE 0 END) AS oneLevelTotal,
SUM(CASE t.hidden_type WHEN '2' THEN 1 ELSE 0 END) AS twoLevelTotal,
SUM(CASE t.hidden_type WHEN '3' THEN 1 ELSE 0 END) AS threeLevelTotal,
SUM(CASE t.remediation WHEN '1' THEN 1 ELSE 0 END) AS completedTotal,
SUM(CASE t.remediation WHEN '2' THEN 1 ELSE 0 END) AS incompleteTotal
from (select * from t_hidden_danger_standing_book where is_del = '0') t
</select> </select>
<select id="selectTHiddenDangerStandingBookById" parameterType="Long" resultMap="THiddenDangerStandingBookResult"> <select id="selectTHiddenDangerStandingBookById" parameterType="Long" resultMap="THiddenDangerStandingBookResult">
......
...@@ -33,6 +33,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" ...@@ -33,6 +33,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="installTimeStart != null "> and install_time &gt;= #{installTimeStart}</if> <if test="installTimeStart != null "> and install_time &gt;= #{installTimeStart}</if>
<if test="installTimeEnd != null "> and install_time &lt;= #{installTimeEnd}</if> <if test="installTimeEnd != null "> and install_time &lt;= #{installTimeEnd}</if>
</where> </where>
order by create_time desc
</select> </select>
<select id="selectTSafeEquipmentStandingBookById" parameterType="Long" resultMap="TSafeEquipmentStandingBookResult"> <select id="selectTSafeEquipmentStandingBookById" parameterType="Long" resultMap="TSafeEquipmentStandingBookResult">
......
...@@ -44,6 +44,15 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" ...@@ -44,6 +44,15 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="dealDateStart != null "> and deal_date &gt;= #{dealDateStart}</if> <if test="dealDateStart != null "> and deal_date &gt;= #{dealDateStart}</if>
<if test="dealDateEnd != null "> and deal_date &lt;= #{dealDateEnd}</if> <if test="dealDateEnd != null "> and deal_date &lt;= #{dealDateEnd}</if>
</where> </where>
order by create_time desc
</select>
<select id="selectTTroubleStandingBookStatistic" resultType="TTroubleStandingBookVo">
select COUNT(t.trouble_id) AS troubleTotal,
SUM(t.injury_num) AS injutyTotal,
SUM(t.death_num) AS deathTotal,
ROUND(SUM(CASE t.is_deal WHEN '1' THEN 1 ELSE 0 END)/COUNT(t.trouble_id)*100, 1) AS completionRate
from (select * from t_trouble_standing_book where is_del = '0') t
</select> </select>
<select id="selectTTroubleStandingBookById" parameterType="Long" resultMap="TTroubleStandingBookResult"> <select id="selectTTroubleStandingBookById" parameterType="Long" resultMap="TTroubleStandingBookResult">
......
import request from '@/utils/request'
// 燃气事故台账统计
export function troubleStatistic(query) {
return request({
url: '/statistic/troubleStatistic',
method: 'get',
params: query
})
}
// 隐患整治台账统计
export function hiddenStatistic(query) {
return request({
url: '/statistic/hiddenStatistic',
method: 'get',
params: query
})
}
<template>
<div class="app-container">
<div style="width: 100%;height: 10em;">
<div class="second-div">
<div style="width: 50%;height: 100%; text-align: center;float: left;font-size: 15px;">
<img src="../../../assets/hidden.png" width="40%" style="margin-top: 2rem;">
<p>隐患数量</p>
</div>
<div style="width: 50%;height: 100%;text-align: center;line-height: 9rem;float: right;font-size: 3rem;font-family: 'UnidreamLED';">{{hiddenObj.hiddenTotal}}</div>
</div>
<div class="second-div">
<div style="width: 50%;height: 100%; text-align: center;float: left;font-size: 15px;">
<img src="../../../assets/hidden.png" width="40%" style="margin-top: 2rem;">
<p>已完成数量</p>
</div>
<div style="width: 50%;height: 100%;text-align: center;line-height: 9rem;float: right;font-size: 3rem;font-family: 'UnidreamLED';">{{hiddenObj.completedTotal}}</div>
</div>
<div class="second-div">
<div style="width: 50%;height: 100%; text-align: center;float: left;font-size: 15px;">
<img src="../../../assets/hidden.png" width="40%" style="margin-top: 2rem;">
<p>未完成数量</p>
</div>
<div style="width: 50%;height: 100%;text-align: center;line-height: 9rem;float: right;font-size: 3rem;font-family: 'UnidreamLED';">{{hiddenObj.incompleteTotal}}</div>
</div>
<div class="second-div">
<div style="width: 50%;height: 100%; text-align: center;float: left;font-size: 15px;">
<img src="../../../assets/yh1.png" width="40%" style="margin-top: 2rem;">
<p>一级隐患</p>
</div>
<div style="width: 50%;height: 100%;text-align: center;line-height: 9rem;float: right;font-size: 3rem;font-family: 'UnidreamLED';">{{hiddenObj.oneLevelTotal}}</div>
</div>
<div class="second-div">
<div style="width: 50%;height: 100%; text-align: center;float: left;font-size: 15px;">
<img src="../../../assets/yh2.png" width="40%" style="margin-top: 2rem;">
<p>二级隐患</p>
</div>
<div style="width: 50%;height: 100%;text-align: center;line-height: 9rem;float: right;font-size: 3rem;font-family: 'UnidreamLED';">{{hiddenObj.twoLevelTotal}}</div>
</div>
<div class="second-div">
<div style="width: 50%;height: 100%; text-align: center;float: left;font-size: 15px;">
<img src="../../../assets/yh3.png" width="40%" style="margin-top: 2rem;">
<p>三级隐患</p>
</div>
<div style="width: 50%;height: 100%;text-align: center;line-height: 9rem;float: right;font-size: 3rem;font-family: 'UnidreamLED';">{{hiddenObj.threeLevelTotal}}</div>
</div>
</div>
<div style="width: 100%; padding: 30px 10px 0px 15px;">
<el-table v-loading="loading" :data="hiddenList" >
<el-table-column label="隐患名称" align="center" prop="hiddenTitle" width="200px"/>
<el-table-column label="隐患等级" align="center" prop="hiddenType">
<template slot-scope="scope">
<span v-if="scope.row.hiddenType == '1'">一级隐患</span>
<span v-if="scope.row.hiddenType == '2'">二级隐患</span>
<span v-if="scope.row.hiddenType == '3'">三级隐患</span>
</template>
</el-table-column>
<el-table-column label="隐患位置" align="center" prop="hiddenLocation" width="300px"/>
<el-table-column label="隐患发现人员" align="center" prop="hiddenFindPeople"/>
<el-table-column label="发现时间" align="center" prop="hiddenFindDate" width="150px"/>
<el-table-column label="处理方案" align="center" prop="dealPlanUrl" width="150px">
<template slot-scope="scope">
<span
class="dbtn"
@click="checkFile(scope.row.dealPlanUrl)"
v-if="scope.row.dealPlan != ''"
>
<i class="el-icon el-icon-view"></i>查看/下载
</span>
<span v-else>-</span>
</template>
</el-table-column>
<el-table-column label="整治情况" align="center" prop="remediation" width="120px">
<template slot-scope="scope">
<span v-if="scope.row.remediation == '1'">已完成</span>
<span v-if="scope.row.remediation == '2'">未完成</span>
</template>
</el-table-column>
<el-table-column label="操作" align="center" width="120px">
<template slot-scope="scope">
<el-button
size="mini"
type="text"
icon="el-icon-edit"
@click="showDetail(scope.row)"
v-hasPermi="['standingBook:hidden:query']"
>详情</el-button>
</template>
</el-table-column>
</el-table>
<pagination
v-show="total>0"
:total="total"
:page.sync="queryParams.pageNum"
:limit.sync="queryParams.pageSize"
@pagination="getList"
/>
<el-dialog :title="title" :visible.sync="open" width="1200px" append-to-body @cancel="cancel" @close="cancel">
<el-row>
<el-col :span="14">
<el-form ref="detailForm" :model="detailForm" label-width="120px">
<el-row>
<el-col :span="10">
<el-form-item label="隐患名称:">
<font>{{detailForm.hiddenTitle}}</font>
</el-form-item>
<el-form-item label="隐患发现人员:">
<font>{{detailForm.hiddenFindPeople}}</font>
</el-form-item>
<el-form-item label="发现时间:">
<font>{{detailForm.hiddenFindDate}}</font>
</el-form-item>
</el-col>
<el-col :span="13">
<el-form-item label="隐患等级:">
<font v-if="detailForm.hiddenType == '1'">一级隐患</font>
<font v-if="detailForm.hiddenType == '2'">二级隐患</font>
<font v-if="detailForm.hiddenType == '3'">三级隐患</font>
</el-form-item>
<el-form-item label="隐患位置:">
<font>{{detailForm.hiddenLocation}}</font>
</el-form-item>
<el-form-item label="处理方案:">
<span class="dbtn" @click="checkFile(detailForm.dealPlanUrl)" v-if="detailForm.dealPlan != ''">
<i class="el-icon el-icon-view"></i>查看/下载
</span>
<span v-else>-</span>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-form-item label="隐患内容:">
<font>{{detailForm.hiddenContent}}</font>
</el-form-item>
</el-row>
<el-row>
<el-form-item label="整治情况:">
<font v-if="detailForm.remediation == '1'">已完成</font>
<font v-if="detailForm.remediation == '2'">未完成</font>
</el-form-item>
</el-row>
<el-row>
<el-form-item label="备注信息:">
<font v-if="detailForm.remarks != '' && detailForm.remarks != null">{{detailForm.remarks}}</font>
<font v-else> - </font>
</el-form-item>
</el-row>
</el-form>
</el-col>
<el-col :span="9">
<div style="width: 100%;height: 390px;margin-top: -25px; border: 1px solid rgb(218, 213, 213);margin-bottom: 10px;">
<div style="width: 100%;height: 100%" id="hiddenContainer"></div>
</div>
</el-col>
</el-row>
</el-dialog>
</div>
</div>
</template>
<script>
import { hiddenStatistic } from "@/api/statistic/statisticAnalysis";
import { listHidden, getHidden } from "@/api/standingBook/hidden";
import { EditorMap } from "@/utils/mapClass/getPath.js";
export default {
name: "HiddenStatisticAnalysis",
components: {
},
data() {
return {
// 统计数据
hiddenObj: {},
// 遮罩层
loading: true,
// 隐患台账表格数据
hiddenList: [],
// 总条数
total: 0,
// 地图
map: null,
devicePos: [],
// 弹出层标题
title: "",
// 是否显示弹出层
open: false,
// 查询参数
queryParams: {
pageNum: 1,
pageSize: 10,
},
// 表单参数
detailForm: {},
};
},
created() {
},
mounted() {
this.getStatiData();
this.getList();
},
methods: {
getStatiData() {
hiddenStatistic().then(response => {
this.hiddenObj = response.data;
console.log("this.hiddenObj",this.hiddenObj)
});
},
getList() {
this.loading = true;
listHidden(this.queryParams).then(response => {
this.hiddenList = response.rows;
this.total = response.total;
this.loading = false;
});
},
checkFile(url) {
window.open(url,'_blank');
},
reset() {
this.detailForm = {
hiddenId: null,
hiddenTitle: null,
hiddenContent: null,
hiddenLocation: null,
longitude:null,
latitude: null,
hiddenType: null,
hiddenFindPeople: null,
hiddenFindDate: null,
dealPlan: null,
remediation: null,
createBy: null,
createTime: null,
updateBy: null,
updateTime: null,
isDel: null,
remarks: null
};
this.resetForm("detailForm");
this.devicePos = [];
},
/** 详细信息跳转 */
showDetail(row) {
this.reset();
getHidden(row.hiddenId).then(response => {
this.detailForm = response.data;
this.devicePos = [this.detailForm.longitude, this.detailForm.latitude];
console.log("this.devicePos",this.devicePos);
this.open = true;
this.title = "隐患整治台账详情";
this.$nextTick(() => {
this.map = new EditorMap("hiddenContainer", {}, this);
this.map.addDevice({ path: this.devicePos });
this.map.nowMouseTarget = null;
this.map.mousetoolClose(false);
});
});
},
cancel() {
this.open = false;
this.reset();
this.map.destroy();
},
}
};
</script>
<style>
.second-div{
margin-top: 20px;
width: 15%;
float: left;
margin-left: 1.5%;
height: 9rem;
color: #515a6e;
background-color: #FFF;
border-radius: 5px;
border: 2px solid rgb(22, 151, 207, 0.3);
box-shadow: 0 0 8px 8px rgba(131, 229, 255, 0.1)inset, 0 0 7px 7px rgba(22, 151, 207, 0.2);
}
.dbtn {
display: inline-block;
line-height: normal;
padding-left: 2px;
padding-right: 2px;
cursor: pointer;
border-radius: 3px;
border-style: solid;
border-width: 0;
color: rgb(48, 180, 107);
}
.dbtn:hover {
border-width: 1px;
border-color: rgb(48, 180, 107);
}
</style>
<template>
<div class="app-container">
<div style="width: 100%;height: 10em;">
<div class="first-div">
<div style="width: 40%;height: 100%; text-align: center;float: left;font-size: 15px;">
<img src="../../../assets/trouble.png" width="25%" style="margin-top: 2rem;">
<p>事故发生数</p>
</div>
<div style="width: 60%;height: 100%;text-align: center;line-height: 9rem;float: right;font-size: 3rem;font-family: 'UnidreamLED';">{{troubleObj.troubleTotal}}</div>
</div>
<div class="first-div">
<div style="width: 40%;height: 100%; text-align: center;float: left;font-size: 15px;">
<img src="../../../assets/trouble.png" width="25%" style="margin-top: 2rem;">
<p>伤亡人数</p>
</div>
<div style="width: 60%;height: 100%;text-align: center;line-height: 9rem;float: right;font-size: 3rem;font-family: 'UnidreamLED';">{{troubleObj.injuryTotal+troubleObj.deathTotal}}</div>
</div>
<div class="first-div">
<div style="width: 40%;height: 100%; text-align: center;float: left;font-size: 15px;">
<img src="../../../assets/trouble.png" width="25%" style="margin-top: 2rem;">
<p>事故处理办结率</p>
</div>
<div style="width: 60%;height: 100%;text-align: center;line-height: 9rem;float: right;font-size: 3rem;font-family: 'UnidreamLED';">{{troubleObj.completionRate}}%</div>
</div>
</div>
<div style="width: 100%; padding: 30px;">
<el-table v-loading="loading" :data="troubleList" >
<el-table-column label="事故名称" align="center" prop="troubleName" width="200px"/>
<el-table-column label="事故类型" align="center" prop="troubleType" width="130px">
<template slot-scope="scope">
<span v-if="scope.row.troubleType == 1">生产安全事故</span>
<span v-if="scope.row.troubleType == 2">非生产安全事故</span>
</template>
</el-table-column>
<el-table-column label="事故地点" align="center" prop="troubleLocation" width="300px"/>
<el-table-column label="事故发生时间" align="center" prop="happenDate" width="150px"/>
<el-table-column label="是否人员伤亡" align="center" prop="isCasualties" width="150px">
<template slot-scope="scope">
<span v-if="scope.row.isCasualties == 1"></span>
<span v-if="scope.row.isCasualties == 2"></span>
</template>
</el-table-column>
<el-table-column label="责任单位" align="center" prop="responsibleUnit" width="180px"/>
<el-table-column label="责任人员" align="center" prop="responsiblePeople"/>
<el-table-column label="是否处理" align="center" prop="isDeal">
<template slot-scope="scope">
<span v-if="scope.row.isDeal == 1">已处理</span>
<span v-if="scope.row.isDeal == 2">未处理</span>
</template>
</el-table-column>
<el-table-column label="操作" align="center" width="120px">
<template slot-scope="scope">
<el-button
size="mini"
type="text"
icon="el-icon-edit"
@click="showDetail(scope.row)"
v-hasPermi="['standingBook:trouble:query']"
>详情</el-button>
</template>
</el-table-column>
</el-table>
<pagination
v-show="total>0"
:total="total"
:page.sync="queryParams.pageNum"
:limit.sync="queryParams.pageSize"
@pagination="getList"
/>
<el-dialog :title="title" :visible.sync="open" width="1200px" append-to-body @cancel="cancel" @close="cancel">
<el-row>
<el-col :span="14">
<el-form ref="detailForm" :model="detailForm" label-width="120px">
<el-row>
<el-col :span="10">
<el-form-item label="事故名称:">
<font>{{detailForm.troubleName}}</font>
</el-form-item>
<el-form-item label="事故原因:">
<font>{{detailForm.troubleReason}}</font>
</el-form-item>
<el-form-item label="责任单位:">
<font v-if="detailForm.responsibleUnit != '' && detailForm.responsibleUnit != null">{{detailForm.responsibleUnit}}</font>
<font v-else> - </font>
</el-form-item>
<el-form-item label="是否人员伤亡:">
<font v-if="detailForm.isCasualties == '1'"></font>
<font v-if="detailForm.isCasualties == '2'"></font>
</el-form-item>
</el-col>
<el-col :span="13">
<el-form-item label="事故类型:">
<font v-if="detailForm.troubleType == '1'">安全生产事故</font>
<font v-if="detailForm.troubleType == '2'">非生产安全事故</font>
</el-form-item>
<el-form-item label="事故地点:">
<font>{{detailForm.troubleLocation}}</font>
</el-form-item>
<el-form-item label="责任人员:">
<font v-if="detailForm.responsiblePeople != '' && detailForm.responsiblePeople != null">{{detailForm.responsiblePeople}}</font>
<font v-else> - </font>
</el-form-item>
<el-form-item label="是否处理:">
<font v-if="detailForm.isDeal == '1'">已处理</font>
<font v-if="detailForm.isDeal == '2'">未处理</font>
</el-form-item>
</el-col>
</el-row>
<el-row v-if="detailForm.isCasualties == '1'">
<el-col :span="11">
<el-form-item label="受伤人数:">
<font>{{detailForm.injuryNum}}</font>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="死亡人数:">
<font>{{detailForm.deathNum}}</font>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-form-item label="处理完成时间:">
<font v-if="detailForm.dealDate != '' && detailForm.dealDate != null">{{detailForm.dealDate}}</font>
<font v-else> - </font>
</el-form-item>
</el-row>
<el-row>
<el-form-item label="简要经过:">
<font v-if="detailForm.briefProcess != '' && detailForm.briefProcess != null">{{detailForm.briefProcess}}</font>
<font v-else> - </font>
</el-form-item>
</el-row>
<el-row>
<el-form-item label="备注信息:">
<font v-if="detailForm.remarks != '' && detailForm.remarks != null">{{detailForm.remarks}}</font>
<font v-else> - </font>
</el-form-item>
</el-row>
</el-form>
</el-col>
<el-col :span="9">
<div style="width: 100%;height: 390px;margin-top: -25px; border: 1px solid rgb(218, 213, 213);margin-bottom: 10px;">
<div style="width: 100%;height: 100%" id="troubleContainer"></div>
</div>
</el-col>
</el-row>
</el-dialog>
</div>
</div>
</template>
<script>
import { troubleStatistic } from "@/api/statistic/statisticAnalysis";
import { listTrouble, getTrouble } from "@/api/standingBook/trouble";
import { EditorMap } from "@/utils/mapClass/getPath.js";
export default {
name: "TroubleStatisticAnalysis",
components: {
},
data() {
return {
// 统计数据
troubleObj: {},
// 遮罩层
loading: true,
// 事故台账表格数据
troubleList: [],
// 总条数
total: 0,
// 地图
map: null,
devicePos: [],
// 弹出层标题
title: "",
// 是否显示弹出层
open: false,
// 查询参数
queryParams: {
pageNum: 1,
pageSize: 10,
},
// 表单参数
detailForm: {},
};
},
created() {
},
mounted() {
this.getStatiData();
this.getList();
},
methods: {
getStatiData() {
troubleStatistic().then(response => {
this.troubleObj = response.data;
});
},
getList() {
this.loading = true;
listTrouble(this.queryParams).then(response => {
this.troubleList = response.rows;
this.total = response.total;
this.loading = false;
});
},
reset() {
this.detailForm = {
troubleId: null,
troubleName: null,
troubleLocation: null,
longitude: null,
latitude: null,
troubleType: null,
briefProcess: null,
troubleReason: null,
isCasualties: null,
injuryNum: null,
deathNum: null,
responsibleUnit: null,
responsiblePeople: null,
isDeal: null,
happenDate: null,
dealDate: null,
createBy: null,
createTime: null,
updateBy: null,
updateTime: null,
isDel: null,
remarks: null
};
this.resetForm("detailForm");
this.devicePos = [];
},
/** 详细信息跳转 */
showDetail(row) {
this.reset();
getTrouble(row.troubleId).then(response => {
this.detailForm = response.data;
this.devicePos = [this.detailForm.longitude, this.detailForm.latitude];
console.log("this.devicePos",this.devicePos);
this.open = true;
this.title = "燃气事故台账详情";
this.$nextTick(() => {
this.map = new EditorMap("troubleContainer", {}, this);
this.map.addDevice({ path: this.devicePos });
this.map.nowMouseTarget = null;
this.map.mousetoolClose(false);
});
});
},
cancel() {
this.open = false;
this.reset();
this.map.destroy();
},
}
};
</script>
<style>
.first-div{
margin-top: 20px;
width: 30%;
float: left;
margin-left: 2.5%;
height: 9rem;
color: #515a6e;
background-color: #FFF;
border-radius: 5px;
border: 2px solid rgb(22, 151, 207, 0.3);
box-shadow: 0 0 8px 8px rgba(131, 229, 255, 0.1)inset, 0 0 7px 7px rgba(22, 151, 207, 0.2);
}
</style>
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment