Commit 8d85811c authored by zhangjianqian's avatar zhangjianqian

入户安检分析

parent 7ce462df
...@@ -5,6 +5,7 @@ import java.util.List; ...@@ -5,6 +5,7 @@ import java.util.List;
import java.util.Map; import java.util.Map;
import com.zehong.system.domain.Statistics; import com.zehong.system.domain.Statistics;
import com.zehong.system.domain.TInspectReport;
import com.zehong.system.domain.form.THiddenDangerStandingBookForm; import com.zehong.system.domain.form.THiddenDangerStandingBookForm;
import com.zehong.web.controller.tool.TimeConfig; import com.zehong.web.controller.tool.TimeConfig;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
...@@ -182,7 +183,7 @@ public class THiddenDangerStandingBookController extends BaseController ...@@ -182,7 +183,7 @@ public class THiddenDangerStandingBookController extends BaseController
* @return * @return
*/ */
@GetMapping("/hiddenBookStatistics") @GetMapping("/hiddenBookStatistics")
public AjaxResult hiddenBookStatistics(){ public AjaxResult hiddenBookStatistics(TInspectReport report){
return AjaxResult.success(tHiddenDangerStandingBookService.hiddenBookStatistics()); return AjaxResult.success(tHiddenDangerStandingBookService.hiddenBookStatistics(report));
} }
} }
...@@ -6,10 +6,7 @@ import com.zehong.common.core.domain.model.LoginUser; ...@@ -6,10 +6,7 @@ import com.zehong.common.core.domain.model.LoginUser;
import com.zehong.common.utils.SecurityUtils; import com.zehong.common.utils.SecurityUtils;
import com.zehong.common.utils.ServletUtils; import com.zehong.common.utils.ServletUtils;
import com.zehong.framework.web.service.TokenService; import com.zehong.framework.web.service.TokenService;
import com.zehong.system.domain.THiddenDangerStandingBook; import com.zehong.system.domain.*;
import com.zehong.system.domain.TSafeEquipmentStandingBook;
import com.zehong.system.domain.TTroubleStandingBook;
import com.zehong.system.domain.TVideoManager;
import com.zehong.system.domain.form.THiddenDangerStandingBookForm; import com.zehong.system.domain.form.THiddenDangerStandingBookForm;
import com.zehong.system.domain.vo.HomepageVo; import com.zehong.system.domain.vo.HomepageVo;
import com.zehong.system.service.*; import com.zehong.system.service.*;
...@@ -21,6 +18,7 @@ import org.springframework.web.bind.annotation.RequestMapping; ...@@ -21,6 +18,7 @@ import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import java.util.List; import java.util.List;
import java.util.Map;
/** /**
* 统计分析 * 统计分析
...@@ -47,6 +45,8 @@ public class StatisticController ...@@ -47,6 +45,8 @@ public class StatisticController
private TokenService tokenService; private TokenService tokenService;
@Autowired @Autowired
private ITWorkOrderService tWorkOrderService; private ITWorkOrderService tWorkOrderService;
@Autowired
private ITInspectReportService inspectReportService;
/** /**
* 燃气事故台账统计 * 燃气事故台账统计
...@@ -101,4 +101,14 @@ public class StatisticController ...@@ -101,4 +101,14 @@ public class StatisticController
return AjaxResult.success(homepageVo); return AjaxResult.success(homepageVo);
} }
/**
* 入户安检统计
*/
@GetMapping("/indoorStatistic")
public AjaxResult indoorStatistic(TInspectReport report) {
Map<String,Object> map = inspectReportService.selectIndoorStatistic(report);
return AjaxResult.success(map);
}
} }
...@@ -54,6 +54,16 @@ public class TSpecialUser extends BaseEntity ...@@ -54,6 +54,16 @@ public class TSpecialUser extends BaseEntity
private String enterpriseId; private String enterpriseId;
private String annual;
public String getAnnual() {
return annual;
}
public void setAnnual(String annual) {
this.annual = annual;
}
public String getEnterpriseId() { public String getEnterpriseId() {
return enterpriseId; return enterpriseId;
} }
......
...@@ -5,6 +5,7 @@ import java.util.Map; ...@@ -5,6 +5,7 @@ import java.util.Map;
import com.zehong.system.domain.Statistics; import com.zehong.system.domain.Statistics;
import com.zehong.system.domain.THiddenDangerStandingBook; import com.zehong.system.domain.THiddenDangerStandingBook;
import com.zehong.system.domain.TInspectReport;
import com.zehong.system.domain.form.THiddenDangerStandingBookForm; import com.zehong.system.domain.form.THiddenDangerStandingBookForm;
import com.zehong.system.domain.vo.THiddenDangerStandingBookVo; import com.zehong.system.domain.vo.THiddenDangerStandingBookVo;
...@@ -104,6 +105,6 @@ public interface THiddenDangerStandingBookMapper ...@@ -104,6 +105,6 @@ public interface THiddenDangerStandingBookMapper
* 隐患统计 * 隐患统计
* @return * @return
*/ */
Map<String,Integer> hiddenBookStatistics(); Map<String,Integer> hiddenBookStatistics(TInspectReport report);
} }
package com.zehong.system.mapper; package com.zehong.system.mapper;
import java.util.List; import java.util.List;
import java.util.Map;
import com.zehong.system.domain.TInspectReport; import com.zehong.system.domain.TInspectReport;
/** /**
...@@ -66,4 +68,10 @@ public interface TInspectReportMapper ...@@ -66,4 +68,10 @@ public interface TInspectReportMapper
* @return 结果 * @return 结果
*/ */
public int deleteTInspectReportByIds(Long[] reportIds); public int deleteTInspectReportByIds(Long[] reportIds);
/**
* 入户安检分析统计
* @return
*/
public Map<String,Object> selectIndoorStatistic(TInspectReport report);
} }
...@@ -5,6 +5,7 @@ import java.util.Map; ...@@ -5,6 +5,7 @@ import java.util.Map;
import com.zehong.system.domain.Statistics; import com.zehong.system.domain.Statistics;
import com.zehong.system.domain.THiddenDangerStandingBook; import com.zehong.system.domain.THiddenDangerStandingBook;
import com.zehong.system.domain.TInspectReport;
import com.zehong.system.domain.form.THiddenDangerStandingBookForm; import com.zehong.system.domain.form.THiddenDangerStandingBookForm;
import com.zehong.system.domain.vo.THiddenDangerStandingBookVo; import com.zehong.system.domain.vo.THiddenDangerStandingBookVo;
...@@ -102,5 +103,5 @@ public interface ITHiddenDangerStandingBookService ...@@ -102,5 +103,5 @@ public interface ITHiddenDangerStandingBookService
* 隐患统计 * 隐患统计
* @return * @return
*/ */
Map<String,Integer> hiddenBookStatistics(); Map<String,Integer> hiddenBookStatistics(TInspectReport report);
} }
package com.zehong.system.service; package com.zehong.system.service;
import java.util.List; import java.util.List;
import java.util.Map;
import com.zehong.system.domain.TInspectReport; import com.zehong.system.domain.TInspectReport;
/** /**
...@@ -66,4 +68,10 @@ public interface ITInspectReportService ...@@ -66,4 +68,10 @@ public interface ITInspectReportService
* @return 结果 * @return 结果
*/ */
public int deleteTInspectReportById(Long reportId); public int deleteTInspectReportById(Long reportId);
/**
* 入户安检分析统计
* @return
*/
public Map<String,Object> selectIndoorStatistic(TInspectReport report);
} }
...@@ -8,6 +8,7 @@ import com.zehong.common.core.domain.entity.SysRole; ...@@ -8,6 +8,7 @@ import com.zehong.common.core.domain.entity.SysRole;
import com.zehong.common.utils.DateUtils; import com.zehong.common.utils.DateUtils;
import com.zehong.common.utils.SecurityUtils; import com.zehong.common.utils.SecurityUtils;
import com.zehong.system.domain.Statistics; import com.zehong.system.domain.Statistics;
import com.zehong.system.domain.TInspectReport;
import com.zehong.system.domain.form.THiddenDangerStandingBookForm; import com.zehong.system.domain.form.THiddenDangerStandingBookForm;
import com.zehong.system.domain.vo.THiddenDangerStandingBookVo; import com.zehong.system.domain.vo.THiddenDangerStandingBookVo;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
...@@ -164,8 +165,8 @@ public class THiddenDangerStandingBookServiceImpl implements ITHiddenDangerStand ...@@ -164,8 +165,8 @@ public class THiddenDangerStandingBookServiceImpl implements ITHiddenDangerStand
* @return * @return
*/ */
@Override @Override
public Map<String,Integer> hiddenBookStatistics(){ public Map<String,Integer> hiddenBookStatistics(TInspectReport report){
return tHiddenDangerStandingBookMapper.hiddenBookStatistics(); return tHiddenDangerStandingBookMapper.hiddenBookStatistics(report);
} }
/** /**
......
package com.zehong.system.service.impl; package com.zehong.system.service.impl;
import java.util.List; import java.util.List;
import java.util.Map;
import com.zehong.common.utils.DateUtils; import com.zehong.common.utils.DateUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
...@@ -102,4 +104,14 @@ public class TInspectReportServiceImpl implements ITInspectReportService ...@@ -102,4 +104,14 @@ public class TInspectReportServiceImpl implements ITInspectReportService
{ {
return tInspectReportMapper.deleteTInspectReportById(reportId); return tInspectReportMapper.deleteTInspectReportById(reportId);
} }
/**
* 入户安检分析统计
* @param report
* @return
*/
@Override
public Map<String, Object> selectIndoorStatistic(TInspectReport report) {
return tInspectReportMapper.selectIndoorStatistic(report);
}
} }
...@@ -263,7 +263,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" ...@@ -263,7 +263,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</select> </select>
<select id="hiddenBookStatistics" resultType="java.util.HashMap"> <select id="hiddenBookStatistics" resultType="java.util.HashMap" parameterType="TInspectReport">
SELECT SELECT
IFNULL(SUM(CASE remediation WHEN '1' THEN 1 ELSE 0 END),0) AS finishNum, IFNULL(SUM(CASE remediation WHEN '1' THEN 1 ELSE 0 END),0) AS finishNum,
IFNULL(SUM(CASE remediation WHEN '2' THEN 1 ELSE 0 END),0) AS unFinishNum, IFNULL(SUM(CASE remediation WHEN '2' THEN 1 ELSE 0 END),0) AS unFinishNum,
...@@ -278,5 +278,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" ...@@ -278,5 +278,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
t_hidden_danger_standing_book t_hidden_danger_standing_book
WHERE WHERE
is_del = '0' is_del = '0'
<if test="annual!=null"> AND hidden_find_date like concat('%',#{annual},'%') </if>
<if test="companyInfoId!=null and companyInfoId!=''">
AND beyondEnterprise_id = #{companyInfoId}
</if>
</select> </select>
</mapper> </mapper>
...@@ -165,4 +165,34 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" ...@@ -165,4 +165,34 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
#{reportId} #{reportId}
</foreach> </foreach>
</delete> </delete>
<select id="selectIndoorStatistic" resultType="hashmap" parameterType="TInspectReport">
SELECT
IFNULL(SUM(IF(u.user_type=1,1,0)),0) AS jmnum,
IFNULL(SUM(IF(u.user_type=2,1,0)),0) AS synum,
IFNULL(SUM(IF(u.user_type=3,1,0)),0) AS gynum,
IFNULL(SUM(IF(u.user_type=1 AND t.indoor_status ='DONE',1,0)),0) AS jmdone,
IFNULL(SUM(IF(u.user_type=1 AND t.indoor_status ='REJ',1,0)),0) AS jmrej,
IFNULL(SUM(IF(u.user_type=1 AND t.indoor_status ='NONE',1,0)),0) AS jmnone,
IFNULL(SUM(IF(u.user_type=2 AND t.indoor_status ='DONE',1,0)),0) AS sydone,
IFNULL(SUM(IF(u.user_type=2 AND t.indoor_status ='REJ',1,0)),0) AS syrej,
IFNULL(SUM(IF(u.user_type=2 AND t.indoor_status ='NONE',1,0)),0) AS synone,
IFNULL(SUM(IF(u.user_type=3 AND t.indoor_status ='DONE',1,0)),0) AS gydone,
IFNULL(SUM(IF(u.user_type=3 AND t.indoor_status ='REJ',1,0)),0) AS gyrej,
IFNULL(SUM(IF(u.user_type=3 AND t.indoor_status ='NONE',1,0)),0) AS gynone
FROM t_inspect_report t
JOIN (
SELECT `user_no`, MAX(indoor_time) AS max_time
FROM t_inspect_report
WHERE `annual` = #{annual}
<if test="companyInfoId != null and companyInfoId != ''">AND company_info_id = #{companyInfoId}</if>
GROUP BY `user_no`
) AS sub_t
ON t.`user_no` = sub_t.`user_no`
AND t.indoor_time = sub_t.max_time
LEFT JOIN t_detector_user u ON u.user_id = t.user_no
</select>
</mapper> </mapper>
\ No newline at end of file
...@@ -30,6 +30,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" ...@@ -30,6 +30,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<include refid="selectTSpecialUserVo"/> <include refid="selectTSpecialUserVo"/>
<where> <where>
<if test="userId != null "> and user_id = #{userId}</if> <if test="userId != null "> and user_id = #{userId}</if>
<if test="annual != null and annual !=''"> and con_end_time like concat('%',#{annual},'%') </if>
<if test="enterpriseId != null and enterpriseId !=''"> and enterprise_id = #{enterpriseId}</if>
<if test="userType != null and userType != ''"> and user_type = #{userType}</if> <if test="userType != null and userType != ''"> and user_type = #{userType}</if>
<if test="conStartTime != null "> and con_start_time = #{conStartTime}</if> <if test="conStartTime != null "> and con_start_time = #{conStartTime}</if>
<if test="conEndTime != null "> and con_end_time = #{conEndTime}</if> <if test="conEndTime != null "> and con_end_time = #{conEndTime}</if>
......
...@@ -78,9 +78,10 @@ export function exportHidden(query) { ...@@ -78,9 +78,10 @@ export function exportHidden(query) {
//隐患统计 //隐患统计
export function hiddenBookStatistics() { export function hiddenBookStatistics(query) {
return request({ return request({
url: '/standingBook/hidden/hiddenBookStatistics', url: '/standingBook/hidden/hiddenBookStatistics',
method: 'get', method: 'get',
params: query
}) })
} }
...@@ -22,4 +22,13 @@ export function homepageStatistic() { ...@@ -22,4 +22,13 @@ export function homepageStatistic() {
url: '/statistic/homepageStatistic', url: '/statistic/homepageStatistic',
method: 'get' method: 'get'
}) })
}
//入户安检统计
export function indoorStatistic(query) {
return request({
url: '/statistic/indoorStatistic',
method: 'get',
params: query
})
} }
<!--
* @Author: your name
* @Date: 2022-04-11 15:07:47
* @LastEditTime: 2022-04-12 09:55:18
* @LastEditors: Please set LastEditors
* @Description: 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
* @FilePath: /gassafety-progress/gassafetyprogress-web/src/views/operationMonitor/xunjianxuncha/topChars/left.vue
-->
<template>
<div class="charsCom all-flex-h">
<div class="title">入户安检统计</div>
<div class="two all-flex">
<div class="left">
<div class="first">
<!--<span class="text">巡检年度计划</span>-->
<span class="text">居民用户安检</span>
<span>{{maps.jmnum}}</span>
</div>
<div class="second all-flex">
<div class="left">已安检</div>
<div class="right">到访遇到</div>
<div class="right">拒绝安检</div>
</div>
<div class="third all-flex">
<div class="left">{{maps.jmdone}}</div>
<div class="right">{{maps.jmnone}}</div>
<div class="right">{{maps.jmrej}}</div>
</div>
<div class="first fourth">
<div class="">安检完成比例</div>
</div>
<div class="fifth">
<div class="contant">
<Chars :options="jmoptions"></Chars>
</div>
</div>
</div>
<div class="left">
<div class="first">
<!--<span class="text">巡检年度计划</span>-->
<span class="text">商业用户安检</span>
<span>{{maps.synum}}</span>
</div>
<div class="second all-flex">
<div class="left">已安检</div>
<div class="right">到访遇到</div>
<div class="right">拒绝安检</div>
</div>
<div class="third all-flex">
<div class="left">{{maps.sydone}}</div>
<div class="right">{{maps.synone}}</div>
<div class="right">{{maps.syrej}}</div>
</div>
<div class="first fourth">
<div class="">安检完成比例</div>
</div>
<div class="fifth">
<div class="contant">
<Chars :options="syoptions"></Chars>
</div>
</div>
</div>
<div class="right">
<div class="first">
<!--<span class="text">巡检完成情况</span>-->
<span class="text">工业用户安检</span>
<span>{{maps.gynum}}</span>
</div>
<div class="second all-flex">
<div class="left">已安检</div>
<div class="right">到访遇到</div>
<div class="right">拒绝安检</div>
</div>
<div class="third all-flex">
<div class="left">{{maps.gydone}}</div>
<div class="right">{{maps.gynone}}</div>
<div class="right">{{maps.gyrej}}</div>
</div>
<div class="first fourth">
<div class="">安检完成比例</div>
</div>
<div class="fifth">
<div class="contant">
<Chars :options="gyoptions" ></Chars>
</div>
</div>
</div>
</div>
</div>
</template>
<script>
import Chars from "@/components/allCharsCom/Chars";
import { homepageStatistic,indoorStatistic } from "@/api/statistic/statisticAnalysis";
export default {
components: {
Chars,
},
props:{
annual: {
type: String,
default: 2025,
},
companyInfoId: {
type: String,
default: 23,
},
},
data(){
return{
totalObj: {
taskTotal: 0,
taskFeedbackTotal: 0
},
maps:{},
jmoptions:{
color:['red',"lightblue",'blue'],
grid: {
bottom: "7%",
containLabel: true,
},
tooltip: {
trigger: "item",
},
series: [
{
name: '状态占比',
type: 'pie',
radius: ['50%', '80%'],
label: {
show: true,
position: 'center'
},
labelLine: {
show: false
},
data: [
{value: 0, name: '拒绝安检'},
{value: 0, name: '到访不遇'},
{value: 0, name: '已安检'},
]
}
]
},
syoptions:{
color:['red',"lightblue",'blue'],
grid: {
bottom: "7%",
containLabel: true,
},
tooltip: {
trigger: "item",
},
series: [
{
name: '状态占比',
type: 'pie',
radius: ['50%', '80%'],
label: {
show: true,
position: 'center'
},
labelLine: {
show: false
},
data: [
{value: 0, name: '拒绝安检'},
{value: 0, name: '到访不遇'},
{value: 0, name: '已安检'},
]
}
]
},
gyoptions:{
color:['red',"lightblue",'blue'],
grid: {
bottom: "7%",
containLabel: true,
},
tooltip: {
trigger: "item",
},
series: [
{
name: '状态占比',
type: 'pie',
radius: ['50%', '80%'],
label: {
show: true,
position: 'center'
},
labelLine: {
show: false
},
data: [
{value: 0, name: '拒绝安检'},
{value: 0, name: '到访不遇'},
{value: 0, name: '已安检'},
]
}
]
},
}
},
created(){
this.getStatiData();
},
watch: {
annual(newVal, oldVal) {
//console.log(`Message changed from "${oldVal}" to "${newVal}"`);
this.getStatiData();
},
companyInfoId(newVal, oldVal){
this.getStatiData();
}
},
methods:{
getStatiData() {
indoorStatistic({companyInfoId:this.companyInfoId,annual:this.annual}).then(response => {
this.maps = response.data;
this.jmoptions.series[0].data = [
{value: this.maps.jmrej, name: '拒绝安检'},
{value: this.maps.jmnone, name: '到访不遇'},
{value: this.maps.jmdone, name: '已安检'},
]
this.syoptions.series[0].data = [
{value: this.maps.syrej, name: '拒绝安检'},
{value: this.maps.synone, name: '到访不遇'},
{value: this.maps.sydone, name: '已安检'},
]
this.gyoptions.series[0].data = [
{value: this.maps.gyrej, name: '拒绝安检'},
{value: this.maps.gynone, name: '到访不遇'},
{value: this.maps.gydone, name: '已安检'},
]
});
},
}
};
</script>
<style lang="scss" scoped>
.charsCom {
width: 100%;
height: 100%;
color: #333333;
}
.title {
text-align: center;
font-size: 24px;
margin-bottom: 7px;
}
.two {
flex: 1;
> .left {
margin-right: 70px;
}
> .right {
}
> div {
font-size: 16px;
flex: 1;
// display: flex;
// flex-direction: column;
}
.left,
.right {
display: flex;
flex-direction: column;
justify-content: space-between;
.first {
margin-bottom: 6px;
text-align: left;
.text {
display: inline-block;
margin-right: 8px;
}
}
.second {
width: 250px;
height: 30px;
line-height: 30px;
box-sizing: border-box;
box-shadow: 0px 0px 3px 1px #dddddd;
margin-bottom: 19px;
> div {
// flex: 1;
text-align: center;
&.left {
color: #1d8cf3;
}
&.right {
color: #00c3f1;
}
}
}
.third {
text-align: center;
width: 250px;
margin-bottom: 24px;
}
.fifth {
flex: 1;
// background: red;
padding-top: 5px;
.contant {
width: 120px;
height: 120px;
margin: 0 auto;
}
}
}
}
</style>
<!--
* @Author: your name
* @Date: 2022-04-11 15:07:47
* @LastEditTime: 2022-04-20 11:09:34
* @LastEditors: Please set LastEditors
* @Description: 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
* @FilePath: /gassafety-progress/gassafetyprogress-web/src/views/operationMonitor/xunjianxuncha/topChars/left.vue
-->
<template>
<div class="charsCom all-flex-h">
<div class="title">隐患整改</div>
<div class="two all-flex">
<div class="left">
<div class="first">
<span class="text">隐患发现情况</span>
<span>{{hiddenBookInfo.finishNum + hiddenBookInfo.unFinishNum}}</span>
</div>
<div class="second all-flex">
<div class="left">隐患未整改数</div>
<div class="right">隐患已整改数</div>
</div>
<div class="third all-flex">
<div class="left">{{ hiddenBookInfo.unFinishNum}}</div>
<div class="right">{{hiddenBookInfo.finishNum}}</div>
</div>
<div class="first">
<span class="text">隐患整改率</span>
</div>
<div class="chars-box" style="margin-top: -60px">
<Chars color="#604AFF" :options="option"></Chars>
</div>
</div>
<div class="right">
<div class="first">隐患类型</div>
<div ref="myChartWidth" style="margin-top: 60px" class="chars-box">
<Chars :options="reasonOptions" />
</div>
</div>
</div>
<!--<div class="three all-flex-h">-->
<!--<div class="first">隐患原因</div>-->
<!--<div ref="myChartWidth" class="chars-box">-->
<!--<Chars :options="reasonOptions" />-->
<!--</div>-->
<!--</div>-->
</div>
</template>
<script>
import Chars from "@/components/allCharsCom/Chars";
import { hiddenBookStatistics } from "@/api/standingBook/hidden";
export default {
components: {
Chars,
},
created(){
this.getHiddenBookInfo();
},
props:{
annual: {
type: String,
default: 2025,
},
companyInfoId: {
type: String,
default: 23,
},
},
data() {
return {
bottomData: [
[
{ name: "裂缝", value: 0, color: "#604AFF" },
{ name: "管道称重", value: 0, color: "#FFC337" },
{ name: "其他", value: 0, color: "#86FF5B" },
{ name: "腐蚀", value: 0, color: "#03C4F1" },
{ name: "漏气", value: 0, color: "#1F8DF3" },
],
],
option:{
color:['blue','lightblue'],
grid: {
bottom: "7%",
containLabel: true,
},
tooltip: {
trigger: "item",
},
series: [
{
name: '访问来源',
type: 'pie',
radius: ['40%', '70%'],
label: {
show: true,
position: 'center'
},
labelLine: {
show: false
},
data: [
{value: 0, name: '整改'},
{value: 0, name: '未整改'},
]
}
]
},
reasonOptions:{},
hiddenBookInfo: {
unFinishNum: 0,
finishNum: 0
}
};
},
watch: {
annual(newVal, oldVal) {
//console.log(`Message changed from "${oldVal}" to "${newVal}"`);
this.getHiddenBookInfo();
},
companyInfoId(newVal, oldVal){
this.getHiddenBookInfo();
}
},
methods: {
bottomOptions() {
return {
series: this.bottomData.map((data, idx) => {
const rich = {};
data
.map((item) => ({
fontsize: 12,
color: item.color,
}))
.forEach((item, index) => {
rich[`dataIndex${index}`] = item;
});
return {
type: "pie",
radius: ["68%", "80%"],
tooltip: {
trigger: "item",
},
color: data.map((item) => item.color),
itemStyle: {
borderWidth: 2,
borderRadius: 10,
borderColor: "#fff",
},
label: {
alignTo: "edge",
// formatter: "{name|{b}}\n{num|{c} 个}",
formatter: (parm) => {
return `{dataIndex${parm.dataIndex}|${parm.data.name}}\n{dataIndex${parm.dataIndex}|${parm.data.value}}`;
},
minMargin: 5,
edgeDistance: 10,
lineHeight: 15,
rich,
},
labelLine: {
length: 15,
length2: 0,
maxSurfaceAngle: 80,
},
labelLayout: (params) => {
const { width } = this.$refs.myChartWidth.getBoundingClientRect();
const isLeft = params.labelRect.x < width / 2;
const points = params.labelLinePoints;
console.log("points",points)
// Update the end point.
points[2][0] = isLeft
? params.labelRect.x
: params.labelRect.x + params.labelRect.width;
return {
labelLinePoints: points,
};
},
data: data,
};
}),
};
},
getHiddenBookInfo(){
hiddenBookStatistics({companyInfoId:this.companyInfoId,annual:this.annual}).then(res =>{
if(res.code == 200){
this.hiddenBookInfo= res.data;
this.option.series[0].data = [{value: res.data.finishNum, name: '整改'},{value: res.data.unFinishNum, name: '未整改'}];
this.bottomData = [
[{ name: "漏气", value: res.data.blowNum, color: "#604AFF" },
{ name: "腐蚀", value: res.data.corrosionNum, color: "#FFC337" },
{ name: "裂缝", value: res.data.crackNum, color: "#86FF5B" },
{ name: "设备故障", value: res.data.deviceNum, color: "#03C4F1" },
{ name: "安全距离不足", value: res.data.distanceNum, color: "#1F8DF3" },
{ name: "管道承重", value: res.data.pipeNum, color: "#03C4F1" },
{ name: "其他", value: res.data.otherNum, color: "#1F8DF3" }]
],
this.reasonOptions = this.bottomOptions();
}
//console.log("res==================",res)
})
}
},
};
</script>
<style lang="scss" scoped>
.charsCom {
width: 100%;
height: 100%;
color: #333333;
}
.title {
text-align: center;
font-size: 24px;
margin-bottom: 7px;
}
.two {
flex: 1;
> .left {
max-width: 30%;
margin-right: 70px;
.first {
margin-bottom: 6px;
}
.chars-box {
width: 70%;
height: 60%;
margin: 0 auto;
}
.second {
width: 213px;
height: 30px;
line-height: 30px;
box-sizing: border-box;
box-shadow: 0px 0px 3px 1px #dddddd;
margin-bottom: 19px;
> div {
// flex: 1;
text-align: center;
&.left {
color: #1d8cf3;
}
&.right {
color: #00c3f1;
}
}
}
.third {
text-align: center;
width: 213px;
margin-bottom: 24px;
}
}
> .right {
width: 65%;
.first {
text-align: center !important;
}
.chars-box {
width: 100%;
height: 60%;
margin: 0 auto;
}
}
> div {
font-size: 16px;
flex: 1;
// display: flex;
// flex-direction: column;
}
.left,
.right {
// display: flex;
// flex-direction: column;
// justify-content: space-between;
.first {
text-align: left;
.text {
display: inline-block;
margin-right: 8px;
}
}
}
}
.three {
font-size: 16px;
flex: 1;
// background: red;
.chars-box {
flex: 1;
}
}
</style>
<!--
* @Author: your name
* @Date: 2022-04-11 15:07:47
* @LastEditTime: 2022-04-14 18:00:06
* @LastEditors: Please set LastEditors
* @Description: 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
* @FilePath: /gassafety-progress/gassafetyprogress-web/src/views/operationMonitor/xunjianxuncha/topChars/left.vue
-->
<template>
<div class="charsCom all-flex-h">
<div class="title">特殊用户</div>
<div class="four all-flex-h">
<div class="wrapper">
<div class="top-wrapper flex" style="width: 320px">
<div class="input-wrapper">
<el-input
style="width: 250px"
v-model="queryParams.nickName"
placeholder="点击输入用户名称"
suffix-icon="el-icon-search"
size="mini"
/>
</div>
<div class="enter">
<el-button size="mini" @click="enter"
><span class="text">确认</span></el-button
>
</div>
<div class="reset">
<el-button size="mini" @click="reset">
<span class="text">重置</span>
<i class="el-icon-refresh el-icon--right"></i>
</el-button>
</div>
</div>
<div class="bottom all-flex-h" style="margin-top: 4px">
<el-table
:data="specialuserList"
border
style="width: 100%">
<el-table-column
prop="nickName"
label="姓名">
</el-table-column>
<el-table-column
prop="userType"
label="类型" :formatter="userTypeFormat">
</el-table-column>
<el-table-column
prop="conStartTime"
label="开始时间 ">
</el-table-column>
<el-table-column
prop="conEndTime"
label="结束时间 ">
</el-table-column>
</el-table>
<div class="page">
<pagination
:small="true"
v-show="total>0"
:total="total"
:page.sync="queryParams.pageNum"
:limit.sync="queryParams.pageSize"
@pagination="getList"
layout="prev, pager, next,total"
/>
</div>
</div>
</div>
</div>
</div>
</div>
</template>
<script>
import { listSpecialuser } from "@/api/supervise/specialuser";
export default {
components: {
},
props:{
annual: {
type: String,
default: 2025,
},
companyInfoId: {
type: String,
default: 23,
},
},
data() {
return {
total:4,
limit:2,
showSearch: true,
queryParams: {
pageNum: 1,
pageSize: 4,
enterpriseId:null,
nickName: null
},
// 特殊用户管控表格数据
specialuserList: [],
arr: [],
};
},
watch: {
annual(newVal, oldVal) {
//console.log(`Message changed from "${oldVal}" to "${newVal}"`);
this.getList();
},
companyInfoId(newVal, oldVal){
this.getList();
}
},
created() {
this.getDicts("t_special_user").then(response => {
this.userTypeOptions = response.data;
});
this.getList();
},
methods: {
enter(){
this.queryParams.pageNum =1;
this.getList();
},
reset(){
this.queryParams.nickName=null;
this.getList();
},
// 用户类型字典翻译
userTypeFormat(row, column) {
return this.selectDictLabel(this.userTypeOptions, row.userType);
},
//特殊用户
getList(){
this.queryParams.enterpriseId = this.companyInfoId;
this.queryParams.annual = this.annual;
listSpecialuser(this.queryParams).then(response => {
this.specialuserList = response.rows;
this.total = response.total;
});
},
handleClick(tab, event) {
console.log(tab, event);
}
},
mounted() {},
};
</script>
<style lang="scss" scoped>
.charsCom {
width: 100%;
height: 100%;
}
.title {
text-align: center;
font-size: 24px;
margin-bottom: 15px;
}
.two {
box-shadow: 0px 0px 3px 1px #dddddd;
height: 28px;
font-size: 14px;
margin-bottom: 15px;
> div {
line-height: 28px;
flex: 1;
text-align: center;
&.left {
color: #1f8df3;
}
&.middle {
flex: 1;
color: #03c4f1;
}
&.right {
color: #ffc337;
}
}
}
.three {
font-size: 16px;
margin-bottom: 10px;
> div {
flex: 1;
line-height: 24px;
text-align: center;
}
}
.four {
flex: 1;
font-size: 14px;
// 这个解决子元素overhidden失效问题
min-height: 0;
>.top {
background: rgba(24, 144, 255, 0.1);
height: 29px;
line-height: 29px;
> div {
flex: 1;
text-align: center;
}
}
.scroll-wrapper {
// font-size: 14px;
flex: 1;
// 这个解决子元素overhidden失效问题
min-height: 0;
// background: red;
// overflow: hidden;
// position:relative;
}
}
::v-deep .el-table--medium td{
padding: 4px 0;
}
::v-deep .el-table--medium th{
padding: 4px 0;
height: 30px;
}
</style>
<!--
* @Author: your name
* @Date: 2022-04-11 14:11:04
* @LastEditTime: 2022-04-14 10:45:52
* @LastEditors: Please set LastEditors
* @Description: 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
* @FilePath: /gassafety-progress/gassafetyprogress-web/src/views/operationMonitor/xunjianxuncha/index.vue
-->
<template>
<div class="app-container xjxc">
<div class="shai" >
<el-select
clearable
v-model="danwei"
placeholder="请选择单位"
@change="selectcompanyId"
>
<el-option
v-for="item in enterprises"
:key="item.enterpriseId"
:label="item.enterpriseName"
:value="item.enterpriseId"
></el-option>
</el-select>
</div>
<el-tabs v-model="activeName" style="width: 300px" @tab-click="handleClick">
<el-tab-pane label="2026年度" name="2026"></el-tab-pane>
<el-tab-pane label="2025年度" name="2025"></el-tab-pane>
<el-tab-pane label="2024年度" name="2024"></el-tab-pane>
<el-tab-pane label="2023年度" name="2023"></el-tab-pane>
</el-tabs>
<div class="wrapper flex-h">
<div class="top flex">
<div class="right">
<Right :annual="activeName" :companyInfoId="companyInfoId" />
</div>
<div class="left">
<Left :annual="activeName" :companyInfoId="companyInfoId" />
</div>
<!--<div class="middle">-->
<!--<Middle />-->
<!--</div>-->
</div>
<div class="middle"></div>
<div class="bottom">
<Middle :annual="activeName" :companyInfoId="companyInfoId" />
</div>
</div>
</div>
</template>
<script>
import Left from "./components/Left";
import Middle from "./components/Middle";
import Right from "./components/Right";
import { enterpriseLists } from "@/api/regulation/info";
export default {
components: {
Left,
Middle,
Right
},
data() {
return {
danwei:null,
enterprises: [],
activeName: '2025',
companyInfoId:''
};
},
created() {
this.getEnterpriseLists();
},
methods: {
selectcompanyId(e){
this.companyInfoId = e;
},
//所属单位
getEnterpriseLists(){
const param = {};
enterpriseLists(param).then(response => {
this.enterprises = response.rows;
});
},
handleClick(tab, event) {
console.log(tab, event);
}
},
mounted(){
}
};
</script>
<style lang="scss" scoped>
.app-main {
}
.xjxc {
height: calc(100vh - 50px) !important;
}
.flex {
display: flex;
justify-content: space-between;
}
.flex-h {
display: flex;
// justify-content: space-around;
flex-direction: column;
height: 100%;
.top {
height: 38.7%;
.left {
width: 70%;
padding: 15px 24px 19px;
}
.middle {
width: 35.3%;
padding: 15px 80px 19px 71px;
}
.right {
width: 30.2%;
padding: 15px 29px;
}
> div {
// box-shadow: 2px 0px 13px 1px rgba(0, 0, 0, 0.1);
box-shadow: 2px 0px 10px 1px rgba(0, 0, 0, 0.1);
border-radius: 3px;
}
}
>.middle {
margin: 5px 0;
background: repeating-linear-gradient(135deg, transparent, transparent 3px, #D6D6D6 3px, #D6D6D6 8px);
height: 2px;
}
.bottom {
flex: 1;
}
> div {
// height: 50%;
}
}
.shai{
position: fixed;
right: 20px;
width: 300px;
height: 40px;
}
::v-deep .el-select{
width: 300px;
}
</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