riku
2025-06-20 a030cd7ebede3762fda4dcb6511f43712a417a58
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
<template>
  <BaseCard title="任务监控">
    <!-- <template #expand>
      <SupervisionVisual></SupervisionVisual>
    </template> -->
    <el-scrollbar ref="scrollbarRef">
      <!-- <el-row justify="space-evenly">
        <el-statistic title="今日完成" :value="10"> </el-statistic>
        <el-statistic title="本周完成" :value="10"> </el-statistic>
      </el-row> -->
      <!-- <el-row> -->
      <TaskItem v-for="item in tasks" :key="item.guid" :value="item"></TaskItem>
      <TaskSummary></TaskSummary>
      <!-- </el-row> -->
 
      <!-- <el-row>
      <el-col :span="12">
        <SelfInspection></SelfInspection>
      </el-col>
      <el-col :span="12">
        <JointEnforcement></JointEnforcement>
      </el-col>
    </el-row> -->
    </el-scrollbar>
  </BaseCard>
</template>
 
<script setup>
/**
 * 1. 按照场景类型进行统计展示
 */
import { inject, ref, onMounted, computed } from 'vue'
import { unCalc } from '@/utils/css-util'
 
import SelfInspection from '@/views/inspection/SelfInspection.vue'
import JointEnforcement from '@/views/inspection/JointEnforcement.vue'
import SupervisionVisual from '@/views/visualization/SupervisionVisual.vue'
import TaskSummary from '@/views/management/TaskSummary.vue'
 
import { useSubtaskStore } from '@/stores/subtask.js'
 
/**
 * 任务完成情况
 */
const excludeMapHeight = inject('excludeMapHeight')
const height = ref(`calc(${unCalc(excludeMapHeight)} - 36px)`)
 
const subtaskStore = useSubtaskStore()
const tasks = ref([])
const sceneTaskMap = ref(new Map())
 
function onGetTaskInfo(tInfoList) {
  const resList = []
 
  tInfoList.forEach((tInfo) => {
    const _sceneTaskMap = new Map()
    // 有巡查进度的场景类型的总完成量(针对某些场景类型不做巡查但依旧在计划中的情况)
    let _totaltask = 0,
      _completetask = 0
 
    // 将各场景类型的巡查量
    for (const key in tInfo.totaltaskByScene) {
      const e = tInfo.totaltaskByScene[key]
      const v = {
        sceneType: key,
        total: e,
        finish: tInfo.completetaskByScene[key] ? tInfo.completetaskByScene[key] : 0
      }
      _sceneTaskMap.set(key, v)
      if (v.finish > 0) {
        _totaltask += v.total
        _completetask += v.finish
      }
    }
 
    const task = {
      name: tInfo.name,
      province: tInfo.provinceName,
      district: tInfo.districtName,
      totaltask: tInfo.totaltask,
      completetask: tInfo.completetask,
      _totaltask,
      _completetask,
      count: []
    }
 
    for (const key of _sceneTaskMap.keys()) {
      const value = _sceneTaskMap.get(key)
      task.count.push(value)
    }
    resList.push(task)
  })
 
  tasks.value = resList
}
 
function cal() {
  subtaskStore.onAllTaskRefreshed(onGetTaskInfo)
}
 
onMounted(() => {
  cal()
})
</script>
 
<style scoped>
.text {
  background-color: aliceblue;
}
</style>