From 91513e171078ed6b0887f87b9fced33895d6d3fb Mon Sep 17 00:00:00 2001 From: riku <risaku@163.com> Date: 星期二, 08 七月 2025 08:35:50 +0800 Subject: [PATCH] 2025.7.8 --- src/views/management/TaskStats.vue | 166 ++++++++++++++++++++++++++++++++++++++++--------------- 1 files changed, 120 insertions(+), 46 deletions(-) diff --git a/src/views/management/TaskStats.vue b/src/views/management/TaskStats.vue index 509ba31..2a7d86a 100644 --- a/src/views/management/TaskStats.vue +++ b/src/views/management/TaskStats.vue @@ -1,55 +1,129 @@ <template> - <div class="border-r-small"> - <div class="f-l">鍚勭洃绠″尯鍘跨殑宸℃煡瀹屾垚鎯呭喌</div> - <el-row> - <TaskItem v-for="item in tasks" :key="item.guid" v-bind="item"></TaskItem> - </el-row> - </div> + <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> -export default { - data() { - return { - tasks: [] +<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 + } } - }, - watch: {}, - methods: {}, - mounted() { - let i = 0 - while (i < 3) { - 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: '姝e湪鎵ц', - count: [ - { - sceneType: '宸ュ湴', - total: 90, - finish: 45 - }, - { - sceneType: '椁愰ギ', - total: 90, - finish: 45 - }, - { - sceneType: '姹戒慨', - total: 90, - finish: 45 - } - ] - }) - i++ + + 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> -- Gitblit v1.9.3