Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Contribute to GitLab
Sign in
Toggle navigation
Z
zh-baseversion-project
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
王浩
zh-baseversion-project
Commits
8d85811c
Commit
8d85811c
authored
Feb 11, 2026
by
zhangjianqian
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
入户安检分析
parent
7ce462df
Hide whitespace changes
Inline
Side-by-side
Showing
18 changed files
with
1116 additions
and
12 deletions
+1116
-12
THiddenDangerStandingBookController.java
...ler/standingBook/THiddenDangerStandingBookController.java
+3
-2
StatisticController.java
.../zehong/web/controller/statistic/StatisticController.java
+14
-4
TSpecialUser.java
.../src/main/java/com/zehong/system/domain/TSpecialUser.java
+10
-0
THiddenDangerStandingBookMapper.java
...zehong/system/mapper/THiddenDangerStandingBookMapper.java
+2
-1
TInspectReportMapper.java
...n/java/com/zehong/system/mapper/TInspectReportMapper.java
+8
-0
ITHiddenDangerStandingBookService.java
...ong/system/service/ITHiddenDangerStandingBookService.java
+2
-1
ITInspectReportService.java
...ava/com/zehong/system/service/ITInspectReportService.java
+8
-0
THiddenDangerStandingBookServiceImpl.java
...em/service/impl/THiddenDangerStandingBookServiceImpl.java
+3
-2
TInspectReportServiceImpl.java
...zehong/system/service/impl/TInspectReportServiceImpl.java
+12
-0
THiddenDangerStandingBookMapper.xml
...sources/mapper/system/THiddenDangerStandingBookMapper.xml
+5
-1
TInspectReportMapper.xml
...src/main/resources/mapper/system/TInspectReportMapper.xml
+30
-0
TSpecialUserMapper.xml
...m/src/main/resources/mapper/system/TSpecialUserMapper.xml
+2
-0
hidden.js
zh-baseversion-web/src/api/standingBook/hidden.js
+2
-1
statisticAnalysis.js
zh-baseversion-web/src/api/statistic/statisticAnalysis.js
+9
-0
Left.vue
...sion-web/src/views/supervise/analysis/components/Left.vue
+322
-0
Middle.vue
...on-web/src/views/supervise/analysis/components/Middle.vue
+298
-0
Right.vue
...ion-web/src/views/supervise/analysis/components/Right.vue
+230
-0
index.vue
zh-baseversion-web/src/views/supervise/analysis/index.vue
+156
-0
No files found.
zh-baseversion-admin/src/main/java/com/zehong/web/controller/standingBook/THiddenDangerStandingBookController.java
View file @
8d85811c
...
...
@@ -5,6 +5,7 @@ import java.util.List;
import
java.util.Map
;
import
com.zehong.system.domain.Statistics
;
import
com.zehong.system.domain.TInspectReport
;
import
com.zehong.system.domain.form.THiddenDangerStandingBookForm
;
import
com.zehong.web.controller.tool.TimeConfig
;
import
org.springframework.beans.factory.annotation.Autowired
;
...
...
@@ -182,7 +183,7 @@ public class THiddenDangerStandingBookController extends BaseController
* @return
*/
@GetMapping
(
"/hiddenBookStatistics"
)
public
AjaxResult
hiddenBookStatistics
(){
return
AjaxResult
.
success
(
tHiddenDangerStandingBookService
.
hiddenBookStatistics
());
public
AjaxResult
hiddenBookStatistics
(
TInspectReport
report
){
return
AjaxResult
.
success
(
tHiddenDangerStandingBookService
.
hiddenBookStatistics
(
report
));
}
}
zh-baseversion-admin/src/main/java/com/zehong/web/controller/statistic/StatisticController.java
View file @
8d85811c
...
...
@@ -6,10 +6,7 @@ import com.zehong.common.core.domain.model.LoginUser;
import
com.zehong.common.utils.SecurityUtils
;
import
com.zehong.common.utils.ServletUtils
;
import
com.zehong.framework.web.service.TokenService
;
import
com.zehong.system.domain.THiddenDangerStandingBook
;
import
com.zehong.system.domain.TSafeEquipmentStandingBook
;
import
com.zehong.system.domain.TTroubleStandingBook
;
import
com.zehong.system.domain.TVideoManager
;
import
com.zehong.system.domain.*
;
import
com.zehong.system.domain.form.THiddenDangerStandingBookForm
;
import
com.zehong.system.domain.vo.HomepageVo
;
import
com.zehong.system.service.*
;
...
...
@@ -21,6 +18,7 @@ import org.springframework.web.bind.annotation.RequestMapping;
import
org.springframework.web.bind.annotation.RestController
;
import
java.util.List
;
import
java.util.Map
;
/**
* 统计分析
...
...
@@ -47,6 +45,8 @@ public class StatisticController
private
TokenService
tokenService
;
@Autowired
private
ITWorkOrderService
tWorkOrderService
;
@Autowired
private
ITInspectReportService
inspectReportService
;
/**
* 燃气事故台账统计
...
...
@@ -101,4 +101,14 @@ public class StatisticController
return
AjaxResult
.
success
(
homepageVo
);
}
/**
* 入户安检统计
*/
@GetMapping
(
"/indoorStatistic"
)
public
AjaxResult
indoorStatistic
(
TInspectReport
report
)
{
Map
<
String
,
Object
>
map
=
inspectReportService
.
selectIndoorStatistic
(
report
);
return
AjaxResult
.
success
(
map
);
}
}
zh-baseversion-system/src/main/java/com/zehong/system/domain/TSpecialUser.java
View file @
8d85811c
...
...
@@ -54,6 +54,16 @@ public class TSpecialUser extends BaseEntity
private
String
enterpriseId
;
private
String
annual
;
public
String
getAnnual
()
{
return
annual
;
}
public
void
setAnnual
(
String
annual
)
{
this
.
annual
=
annual
;
}
public
String
getEnterpriseId
()
{
return
enterpriseId
;
}
...
...
zh-baseversion-system/src/main/java/com/zehong/system/mapper/THiddenDangerStandingBookMapper.java
View file @
8d85811c
...
...
@@ -5,6 +5,7 @@ import java.util.Map;
import
com.zehong.system.domain.Statistics
;
import
com.zehong.system.domain.THiddenDangerStandingBook
;
import
com.zehong.system.domain.TInspectReport
;
import
com.zehong.system.domain.form.THiddenDangerStandingBookForm
;
import
com.zehong.system.domain.vo.THiddenDangerStandingBookVo
;
...
...
@@ -104,6 +105,6 @@ public interface THiddenDangerStandingBookMapper
* 隐患统计
* @return
*/
Map
<
String
,
Integer
>
hiddenBookStatistics
();
Map
<
String
,
Integer
>
hiddenBookStatistics
(
TInspectReport
report
);
}
zh-baseversion-system/src/main/java/com/zehong/system/mapper/TInspectReportMapper.java
View file @
8d85811c
package
com
.
zehong
.
system
.
mapper
;
import
java.util.List
;
import
java.util.Map
;
import
com.zehong.system.domain.TInspectReport
;
/**
...
...
@@ -66,4 +68,10 @@ public interface TInspectReportMapper
* @return 结果
*/
public
int
deleteTInspectReportByIds
(
Long
[]
reportIds
);
/**
* 入户安检分析统计
* @return
*/
public
Map
<
String
,
Object
>
selectIndoorStatistic
(
TInspectReport
report
);
}
zh-baseversion-system/src/main/java/com/zehong/system/service/ITHiddenDangerStandingBookService.java
View file @
8d85811c
...
...
@@ -5,6 +5,7 @@ import java.util.Map;
import
com.zehong.system.domain.Statistics
;
import
com.zehong.system.domain.THiddenDangerStandingBook
;
import
com.zehong.system.domain.TInspectReport
;
import
com.zehong.system.domain.form.THiddenDangerStandingBookForm
;
import
com.zehong.system.domain.vo.THiddenDangerStandingBookVo
;
...
...
@@ -102,5 +103,5 @@ public interface ITHiddenDangerStandingBookService
* 隐患统计
* @return
*/
Map
<
String
,
Integer
>
hiddenBookStatistics
();
Map
<
String
,
Integer
>
hiddenBookStatistics
(
TInspectReport
report
);
}
zh-baseversion-system/src/main/java/com/zehong/system/service/ITInspectReportService.java
View file @
8d85811c
package
com
.
zehong
.
system
.
service
;
import
java.util.List
;
import
java.util.Map
;
import
com.zehong.system.domain.TInspectReport
;
/**
...
...
@@ -66,4 +68,10 @@ public interface ITInspectReportService
* @return 结果
*/
public
int
deleteTInspectReportById
(
Long
reportId
);
/**
* 入户安检分析统计
* @return
*/
public
Map
<
String
,
Object
>
selectIndoorStatistic
(
TInspectReport
report
);
}
zh-baseversion-system/src/main/java/com/zehong/system/service/impl/THiddenDangerStandingBookServiceImpl.java
View file @
8d85811c
...
...
@@ -8,6 +8,7 @@ import com.zehong.common.core.domain.entity.SysRole;
import
com.zehong.common.utils.DateUtils
;
import
com.zehong.common.utils.SecurityUtils
;
import
com.zehong.system.domain.Statistics
;
import
com.zehong.system.domain.TInspectReport
;
import
com.zehong.system.domain.form.THiddenDangerStandingBookForm
;
import
com.zehong.system.domain.vo.THiddenDangerStandingBookVo
;
import
org.springframework.beans.factory.annotation.Autowired
;
...
...
@@ -164,8 +165,8 @@ public class THiddenDangerStandingBookServiceImpl implements ITHiddenDangerStand
* @return
*/
@Override
public
Map
<
String
,
Integer
>
hiddenBookStatistics
(){
return
tHiddenDangerStandingBookMapper
.
hiddenBookStatistics
();
public
Map
<
String
,
Integer
>
hiddenBookStatistics
(
TInspectReport
report
){
return
tHiddenDangerStandingBookMapper
.
hiddenBookStatistics
(
report
);
}
/**
...
...
zh-baseversion-system/src/main/java/com/zehong/system/service/impl/TInspectReportServiceImpl.java
View file @
8d85811c
package
com
.
zehong
.
system
.
service
.
impl
;
import
java.util.List
;
import
java.util.Map
;
import
com.zehong.common.utils.DateUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
...
...
@@ -102,4 +104,14 @@ public class TInspectReportServiceImpl implements ITInspectReportService
{
return
tInspectReportMapper
.
deleteTInspectReportById
(
reportId
);
}
/**
* 入户安检分析统计
* @param report
* @return
*/
@Override
public
Map
<
String
,
Object
>
selectIndoorStatistic
(
TInspectReport
report
)
{
return
tInspectReportMapper
.
selectIndoorStatistic
(
report
);
}
}
zh-baseversion-system/src/main/resources/mapper/system/THiddenDangerStandingBookMapper.xml
View file @
8d85811c
...
...
@@ -263,7 +263,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</select>
<select
id=
"hiddenBookStatistics"
resultType=
"java.util.HashMap"
>
<select
id=
"hiddenBookStatistics"
resultType=
"java.util.HashMap"
parameterType=
"TInspectReport"
>
SELECT
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,
...
...
@@ -278,5 +278,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
t_hidden_danger_standing_book
WHERE
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>
</mapper>
zh-baseversion-system/src/main/resources/mapper/system/TInspectReportMapper.xml
View file @
8d85811c
...
...
@@ -165,4 +165,34 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
#{reportId}
</foreach>
</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>
\ No newline at end of file
zh-baseversion-system/src/main/resources/mapper/system/TSpecialUserMapper.xml
View file @
8d85811c
...
...
@@ -30,6 +30,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<include
refid=
"selectTSpecialUserVo"
/>
<where>
<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=
"conStartTime != null "
>
and con_start_time = #{conStartTime}
</if>
<if
test=
"conEndTime != null "
>
and con_end_time = #{conEndTime}
</if>
...
...
zh-baseversion-web/src/api/standingBook/hidden.js
View file @
8d85811c
...
...
@@ -78,9 +78,10 @@ export function exportHidden(query) {
//隐患统计
export
function
hiddenBookStatistics
()
{
export
function
hiddenBookStatistics
(
query
)
{
return
request
({
url
:
'/standingBook/hidden/hiddenBookStatistics'
,
method
:
'get'
,
params
:
query
})
}
zh-baseversion-web/src/api/statistic/statisticAnalysis.js
View file @
8d85811c
...
...
@@ -22,4 +22,13 @@ export function homepageStatistic() {
url
:
'/statistic/homepageStatistic'
,
method
:
'get'
})
}
//入户安检统计
export
function
indoorStatistic
(
query
)
{
return
request
({
url
:
'/statistic/indoorStatistic'
,
method
:
'get'
,
params
:
query
})
}
zh-baseversion-web/src/views/supervise/analysis/components/Left.vue
0 → 100644
View file @
8d85811c
<!--
* @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
>
zh-baseversion-web/src/views/supervise/analysis/components/Middle.vue
0 → 100644
View file @
8d85811c
<!--
* @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
>
zh-baseversion-web/src/views/supervise/analysis/components/Right.vue
0 → 100644
View file @
8d85811c
<!--
* @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
>
zh-baseversion-web/src/views/supervise/analysis/index.vue
0 → 100644
View file @
8d85811c
<!--
* @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
>
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment