@@ -6,20 +6,67 @@
< el-form
:model = "queryParams"
ref = "queryRef"
:inline = "true"
v-show = "showSearch"
label -width = " 100px "
>
< el-form-item label = "巡检点" prop = "inspectionPoint " >
< el-input v-model = "queryParams.inspectionPoint" placeholder="输入巡检点" > < / el -input >
</ el-form-item >
< el-form-item label = "巡检人" prop = "inspectorId" >
< el-input v-model = "queryParams.inspectorId" placeholder="输入巡检人姓名" > < / el -input >
< / el-form-item >
< el-form-item >
< el-button type = "primary" icon = "Search" @click ="handleQuery" > 搜索 < / el -button >
< el-button icon = "Refresh" @click ="resetQuery" > 重置 < / el -button >
< / el-form-item >
< el-row :gutter = "20 " >
< el-col :span = "8" >
< el-form-item label = "巡检点" prop = "inspectionPoint" >
< el-input
v-model = "queryParams.inspectionPoint"
placeholder = "输入巡检点"
> < / el-input >
< / el-form-item >
< / el-col >
< el-col :span = "8" >
< el-form-item label = "巡检人" prop = "inspectorId" >
< el-input
v-model = "queryParams.inspectorId"
placeholder = "输入巡检人姓名"
> < / el-input >
< / el-form-item >
< / el-col >
< / el-row >
< el-row :gutter = "20" >
< el-col :span = "8" >
< el-form-item label = "人员类型" prop = "personType" >
< el-select
v-model = "queryParams.personType"
placeholder = "请选择人员类型"
clearable
style = "width: 100%"
>
< el-option
v-for = "dict in inspection_point_type"
:key = "dict.value"
:label = "dict.label"
:value = "dict.value"
/ >
< / el-select >
< / el-form-item >
< / el-col >
< el-col :span = "8" >
< el-form-item label = "时间范围" >
< el-date-picker
v-model = "daterange"
value -format = " YYYY -MM -DD "
type = "daterange"
range -separator = " - "
start -placeholder = " 开始日期 "
end -placeholder = " 结束日期 "
style = "width: 100%"
> < / el-date-picker >
< / el-form-item >
< / el-col >
< el-col :span = "8" >
< el-form-item >
< el-button type = "primary" icon = "Search" @click ="handleQuery"
> 搜索 < / e l - b u t t o n
>
< el-button icon = "Refresh" @click ="resetQuery" > 重置 < / el -button >
< / el-form-item >
< / el-col >
< / el-row >
< / el-form >
< / el-col >
< / el-row >
@@ -31,8 +78,12 @@
< el-card shadow = "never" class = "section-card" >
< div class = "section-title" > 总计 < / div >
< el-row :gutter = "16" >
< el-col :span = "12" > < Histogram :chart-data = "histogramTotalData" / > < / el-col >
< el-col :span = "12" > < CircularDia gram :data = "inspector TotalData" / > < / el-col >
< el-col :span = "12"
> < Histo gram :chart- data = "histogram TotalData"
/ > < / el-col >
< el-col :span = "12"
> < CircularDiagram :data = "inspectorTotalData"
/ > < / el-col >
< / el-row >
< / el-card >
< / el-col >
@@ -45,8 +96,12 @@
< el-card shadow = "never" class = "section-card" >
< div class = "section-title" > 本月 < / div >
< el-row :gutter = "16" >
< el-col :span = "12" > < Histogram :chart-data = "histogramMonthData" / > < / el-col >
< el-col :span = "12" > < CircularDia gram :data = "inspector MonthData" / > < / el-col >
< el-col :span = "12"
> < Histo gram :chart- data = "histogram MonthData"
/ > < / el-col >
< el-col :span = "12"
> < CircularDiagram :data = "inspectorMonthData"
/ > < / el-col >
< / el-row >
< / el-card >
< / el-col >
@@ -59,8 +114,12 @@
< el-card shadow = "never" class = "section-card" >
< div class = "section-title" > 本日 < / div >
< el-row :gutter = "16" >
< el-col :span = "12" > < Histogram :chart-data = "histogramDayData" / > < / el-col >
< el-col :span = "12" > < CircularDia gram :data = "inspectorDayData" / > < / el-col >
< el-col :span = "12"
> < Histo gram :chart- data = "histogramDayData"
/ > < / el-col >
< el-col :span = "12"
> < CircularDiagram :data = "inspectorDayData"
/ > < / el-col >
< / el-row >
< / el-card >
< / el-col >
@@ -71,12 +130,13 @@
< script setup >
import * as echarts from "echarts" ;
import Histogram from "@/components/ReportAnalytics/Histogram.vue" ;
import CircularDiagram from "@/components/ReportAnalytics/reportCircularDiagram.vue"
import CircularDiagram from "@/components/ReportAnalytics/reportCircularDiagram.vue" ;
import { pointStats3 , inspectorStats3 } from "@/api/inspection/report.js" ;
import { ref , reactive , toRefs , getCurrentInstance } from "vue" ;
const showSearch = ref ( true ) ;
const { proxy } = getCurrentInstance ( ) ;
const { inspection _point _type } = proxy . useDict ( "inspection_point_type" ) ;
// 三套柱状数据:总计 / 本月 / 本日(巡检点统计)
const histogramTotalData = ref ( { xAxis : [ ] , seriesData : [ ] } ) ;
@@ -93,15 +153,16 @@ const totalUser = ref(0);
const monthPoint = ref ( 0 ) ;
const monthUser = ref ( 0 ) ;
// const daterangeOccurTime = ref([]);
const daterange = ref ( [ ] ) ;
const data = reactive ( {
queryParams : {
startTime : null ,
endTime : null ,
inspectionPoint : '' ,
inspectorId : ''
}
inspectionPoint : "" ,
inspectorId : "" ,
personType : null ,
} ,
} ) ;
const { queryParams } = toRefs ( data ) ;
@@ -109,30 +170,65 @@ const { queryParams } = toRefs(data);
function getList ( ) {
queryParams . value = {
inspectionPoint : data . queryParams . inspectionPoint ,
inspectorId : data . queryParams . inspectorId
inspectorId : data . queryParams . inspectorId ,
personType : data . queryParams . personType ,
} ;
if ( daterange . value && daterange . value . length === 2 ) {
queryParams . value . startTime = daterange . value [ 0 ] ;
queryParams . value . endTime = daterange . value [ 1 ] ;
}
// 巡检点统计(三合一:总/月/日)
pointStats3 ( queryParams . value ) . then ( res => {
pointStats3 ( queryParams . value ) . then ( ( res ) => {
const d = res . data || { } ;
const total = d . total || { xAxis : [ ] , seriesData : [ ] } ;
const month = d . month || { xAxis : [ ] , seriesData : [ ] } ;
const day = d . day || { xAxis : [ ] , seriesData : [ ] } ;
histogramTotalData . value = { xAxis : total . xAxis || [ ] , seriesData : total . seriesData || [ ] } ;
histogramMonthData . value = { xAxis : month . xAxis || [ ] , seriesData : month . seriesData || [ ] } ;
histogramDayData . value = { xAxis : day . xAxis || [ ] , seriesData : day . seriesData || [ ] } ;
totalPoint . value = ( histogramTotalData . value . seriesData || [ ] ) . reduce ( ( a , b ) => a + ( b || 0 ) , 0 ) ;
monthPoint . value = ( histogramMonthData . value . seriesData || [ ] ) . reduce ( ( a , b ) => a + ( b || 0 ) , 0 ) ;
histogramTotalData . value = {
xAxis : total . xAxis || [ ] ,
seriesData : total . seriesData || [ ] ,
} ;
histogramMonthData . value = {
xAxis : month . xAxis || [ ] ,
seriesData : month . seriesData || [ ] ,
} ;
histogramDayData . value = {
xAxis : day . xAxis || [ ] ,
seriesData : day . seriesData || [ ] ,
} ;
totalPoint . value = ( histogramTotalData . value . seriesData || [ ] ) . reduce (
( a , b ) => a + ( b || 0 ) ,
0 ,
) ;
monthPoint . value = ( histogramMonthData . value . seriesData || [ ] ) . reduce (
( a , b ) => a + ( b || 0 ) ,
0 ,
) ;
} ) ;
// 巡检人统计(三合一:总/月/日)
inspectorStats3 ( queryParams . value ) . then ( res => {
inspectorStats3 ( queryParams . value ) . then ( ( res ) => {
const d = res . data || { } ;
inspectorTotalData . value = ( d . total || [ ] ) . map ( i => ( { name : i . name , value : i . value } ) ) ;
inspectorMonthData . value = ( d . month || [ ] ) . map ( i => ( { name : i . name , value : i . value } ) ) ;
inspectorDayData . value = ( d . day || [ ] ) . map ( i => ( { name : i . name , value : i . value } ) ) ;
inspectorTotalData . value = ( d . total || [ ] ) . map ( ( i ) => ( {
name : i . name ,
value : i . value ,
} ) ) ;
inspectorMonthData . value = ( d . month || [ ] ) . map ( ( i ) => ( {
name : i . name ,
value : i . value ,
} ) ) ;
inspectorDayData . value = ( d . day || [ ] ) . map ( ( i ) => ( {
name : i . name ,
value : i . value ,
} ) ) ;
// 统计卡片上的“巡检人总次数”汇总
totalUser . value = inspectorTotalData . value . reduce ( ( a , b ) => a + ( b . value || 0 ) , 0 ) ;
monthUser . value = inspectorMonthData . value . reduce ( ( a , b ) => a + ( b . value || 0 ) , 0 ) ;
totalUser . value = inspectorTotalData . value . reduce (
( a , b ) => a + ( b . value || 0 ) ,
0 ,
) ;
monthUser . value = inspectorMonthData . value . reduce (
( a , b ) => a + ( b . value || 0 ) ,
0 ,
) ;
} ) ;
// 巡检人统计(三合一:总/月/日)保持不变
@@ -143,18 +239,20 @@ function handleQuery() {
}
function resetQuery ( ) {
daterange . value = [ ] ;
proxy . resetForm ( "queryRef" ) ;
handleQuery ( ) ;
}
getList ( ) ;
// 时间格式工具( yyyy-MM-dd HH:mm:ss)
function pad ( n ) { return n < 10 ? '0' + n : '' + n }
function formatDateTime ( d ) {
function pad ( n ) {
return n < 10 ? "0" + n : "" + n ;
}
function formatDateTime ( d ) {
const y = d . getFullYear ( ) ;
const m = pad ( d . getMonth ( ) + 1 ) ;
const m = pad ( d . getMonth ( ) + 1 ) ;
const day = pad ( d . getDate ( ) ) ;
const hh = pad ( d . getHours ( ) ) ;
const mm = pad ( d . getMinutes ( ) ) ;
@@ -164,10 +262,18 @@ function formatDateTime(d){
< / script >
< style lang = "scss" scoped >
. el - row {
margin - bottom : 20 px ;
margin - top : 50 px ;
. el - row : first - child {
margin : 20 px 0 ;
}
. section - card {
padding : 8 px 12 px ;
}
. section - title {
font - weight : 600 ;
margin - bottom : 8 px ;
}
: deep ( . el - form - item _ _content ) {
margin - left : 10 px ! important ;
}
. section - card { padding : 8 px 12 px ; }
. section - title { font - weight : 600 ; margin - bottom : 8 px ; }
< / style >