riku
2025-07-08 91513e171078ed6b0887f87b9fced33895d6d3fb
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
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
<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'
 
import taskApi from '@/api/fysp/taskApi.js'
 
/**
 * 任务完成情况
 */
const excludeMapHeight = inject('excludeMapHeight')
const height = ref(`calc(${unCalc(excludeMapHeight)} - 36px)`)
 
const subtaskStore = useSubtaskStore()
const tasks = ref([])
const sceneTaskMap = ref(new Map())
const subtaskLoading = ref(false)
 
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,
      ...tInfo,
      _totaltask,
      _completetask,
      count: []
    }
 
    for (const key of _sceneTaskMap.keys()) {
      const value = _sceneTaskMap.get(key)
      task.count.push(value)
    }
    resList.push(task)
  })
 
  tasks.value = resList
}
 
const area = {
  provincecode: null,
  provincename: '上海市',
  citycode: undefined,
  cityname: undefined,
  districtcode: undefined,
  districtname: undefined,
  starttime: '2025-06-01 00:00:00',
  endtime: '2025-06-30 23:59:59',
  scensetypeid: undefined
}
function cal() {
  subtaskLoading.value = true
  taskApi
    .fetchTopTaskProgress(area)
    .then((res) => {
      if (res.data.length == 0) return
      onGetTaskInfo(res.data)
    })
    .finally(() => (subtaskLoading.value = false))
  // subtaskStore.onAllTaskRefreshed(onGetTaskInfo)
}
 
onMounted(() => {
  cal()
})
</script>
 
<style scoped>
.text {
  background-color: aliceblue;
}
</style>