riku
2025-06-13 b2f563e557d7b19334b6591a00001e3fb522da21
src/views/management/TaskStats.vue
@@ -1,15 +1,19 @@
<template>
  <div class="border-r-small">
    <div class="font-large">巡查量</div>
    <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" v-bind="item"></TaskItem>
    <!-- </el-row> -->
  <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" v-bind="item"></TaskItem>
      <TaskSummary></TaskSummary>
      <!-- </el-row> -->
    <!-- <el-row>
      <!-- <el-row>
      <el-col :span="12">
        <SelfInspection></SelfInspection>
      </el-col>
@@ -17,59 +21,83 @@
        <JointEnforcement></JointEnforcement>
      </el-col>
    </el-row> -->
  </div>
    </el-scrollbar>
  </BaseCard>
</template>
<script>
<script setup>
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'
/**
 * 任务完成情况
 */
export default {
  components: { SelfInspection, JointEnforcement },
  data() {
    return {
      tasks: []
    }
  },
  watch: {},
  methods: {},
  mounted() {
    let i = 0
    while (i < 1) {
      this.tasks.push({
        guid: 'SMuheEkjswioSn7A',
        name: '2024年6月上海市静安区巡查任务',
        district: '静安区',
        planTime: '2024-06',
        startTime: '2024-06-01 00:00:00',
        endTime: '2024-06-30 23:59:59',
        userName: '朱正强#邢子琦',
        status: '正在执行',
        count: [
          {
            sceneType: '工地',
            total: 90,
            finish: 45
          },
          {
            sceneType: '餐饮',
            total: 90,
            finish: 45
          },
          {
            sceneType: '汽修',
            total: 90,
            finish: 45
          }
        ]
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()
    for (const key in tInfo.totaltaskByScene) {
      const e = tInfo.totaltaskByScene[key]
      _sceneTaskMap.set(key, {
        sceneType: key,
        total: e,
        finish: tInfo.completetaskByScene[key] ? tInfo.completetaskByScene[key] : 0
      })
      i++
    }
  }
    // const total = tInfo.totaltask
    // tInfo.subTaskSummary.forEach((s) => {
    //   if (!_sceneTaskMap.has(s.scene.type)) {
    //     _sceneTaskMap.set(s.scene.type, {
    //       sceneType: s.scene.type,
    //       total: total,
    //       finish: 0
    //     })
    //   }
    //   const st = _sceneTaskMap.get(s.scene.type)
    //   st.finish++
    // })
    const task = {
      name: tInfo.name,
      province: tInfo.provinceName,
      district: tInfo.districtName,
      totaltask: tInfo.totaltask,
      completetask: tInfo.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>