From a030cd7ebede3762fda4dcb6511f43712a417a58 Mon Sep 17 00:00:00 2001 From: riku <risaku@163.com> Date: 星期五, 20 六月 2025 13:25:45 +0800 Subject: [PATCH] 2025.6.20 --- src/views/management/TaskSummary.vue | 13 ++ src/views/management/TaskStats.vue | 33 ++++--- src/components/inspection/TaskItem.vue | 116 +++++++++++++++------------- src/views/inspection/problem/component/ProblemChangeChart.vue | 20 ++-- 4 files changed, 99 insertions(+), 83 deletions(-) diff --git a/src/components/inspection/TaskItem.vue b/src/components/inspection/TaskItem.vue index 9a32527..433d7d1 100644 --- a/src/components/inspection/TaskItem.vue +++ b/src/components/inspection/TaskItem.vue @@ -1,56 +1,61 @@ <template> - <el-row justify="start"> - <el-text>{{ name }}</el-text> - </el-row> - <div> - <el-text>鎬婚噺</el-text> - <el-text size="default">{{ completetask + '/' + totaltask }}</el-text> - <el-progress - style="width: 300px" - type="line" - status="warning" - :text-inside="true" - :stroke-width="18" - :striped="percentFormat(completetask, totaltask) < 100" - striped-flow - :percentage="percentFormat(completetask, totaltask)" - > - <template #default="{ percentage }"> - <span class="percentage-value">{{ percentage }}%</span> - </template> - </el-progress> - </div> - <!-- </el-col> --> - <!-- <el-col span="12" class="flex-bottom"> --> - <!-- <div>{{ name }}</div> --> - <!-- <div>{{ planTime }}</div> --> - <!-- <div>{{ userName }}</div> --> - <el-row class="m-t-8"> - <div - align="center" - :style="'width: ' + 300 / count.length + 'px'" - v-for="item in count" - :key="item.sceneType" - > + <div v-if="value"> + <el-row justify="start"> + <el-text>{{ value.name }}</el-text> + </el-row> + <div> + <el-text>鎬婚噺</el-text> + <el-text v-if="value._totaltask > 0" size="default">{{ + value._completetask + '/' + value._totaltask + }}</el-text> + <el-text v-else size="default">{{ value.completetask + '/' + value.totaltask }}</el-text> <el-progress - :stroke-width="18" - status="exception" + style="width: 300px" + type="line" + status="warning" :text-inside="true" - :striped="percentFormat(item.finish, item.total) < 100" + :stroke-width="18" + :striped="percentFormat(value.completetask, value.totaltask) < 100" striped-flow - :percentage="percentFormat(item.finish, item.total)" + :percentage="percentFormat(value.completetask, value.totaltask)" > <template #default="{ percentage }"> - <span class="percentage-value-small">{{ percentage }}%</span> + <span class="percentage-value">{{ percentage }}%</span> </template> </el-progress> - <el-text size="small" truncated>{{ item.sceneType }}</el-text> - <!-- <el-text size="small">{{ item.finish + '/' + item.total }}</el-text> --> - <!-- <span class="percentage-value-small">{{ percentFormat(item.finish, item.total) }}%</span> --> - <!-- <div class="percentage-label-small">{{ item.sceneType }}</div> --> - <!-- <span class="percentage-label-small">{{ item.finish + '/' + item.total }} </span> --> </div> - </el-row> + <!-- </el-col> --> + <!-- <el-col span="12" class="flex-bottom"> --> + <!-- <div>{{ name }}</div> --> + <!-- <div>{{ planTime }}</div> --> + <!-- <div>{{ userName }}</div> --> + <el-row class="m-t-8"> + <div + align="center" + :style="'width: ' + 300 / value.count.length + 'px'" + v-for="item in value.count" + :key="item.sceneType" + > + <el-progress + :stroke-width="18" + status="exception" + :text-inside="true" + :striped="percentFormat(item.finish, item.total) < 100" + striped-flow + :percentage="percentFormat(item.finish, item.total)" + > + <template #default="{ percentage }"> + <span class="percentage-value-small">{{ percentage }}%</span> + </template> + </el-progress> + <el-text size="small" truncated>{{ item.sceneType }}</el-text> + <!-- <el-text size="small">{{ item.finish + '/' + item.total }}</el-text> --> + <!-- <span class="percentage-value-small">{{ percentFormat(item.finish, item.total) }}%</span> --> + <!-- <div class="percentage-label-small">{{ item.sceneType }}</div> --> + <!-- <span class="percentage-label-small">{{ item.finish + '/' + item.total }} </span> --> + </div> + </el-row> + </div> </template> <script> @@ -59,18 +64,19 @@ */ export default { props: { - name: String, - province: String, - district: String, - planTime: String, - startTime: String, - endTime: String, - userName: String, - status: String, - totaltask: Number, - completetask: Number, + // name: String, + // province: String, + // district: String, + // planTime: String, + // startTime: String, + // endTime: String, + // userName: String, + // status: String, + // totaltask: Number, + // completetask: Number, + // count: Array, - count: Array + value: Object }, data() { return {} diff --git a/src/views/inspection/problem/component/ProblemChangeChart.vue b/src/views/inspection/problem/component/ProblemChangeChart.vue index f186224..24675ee 100644 --- a/src/views/inspection/problem/component/ProblemChangeChart.vue +++ b/src/views/inspection/problem/component/ProblemChangeChart.vue @@ -3,12 +3,12 @@ <el-col :span="24"> <el-row justify="space-between" class="p-h-16"> <el-statistic title="鍦烘櫙鏁�" :value="sceneNum" /> - <el-statistic title="闂鏁�" :value="proNum" /> - <!-- <el-statistic title="鍗曞満鏅棶棰樺潎鍊�" :value="proEachSceneNum" /> --> - <el-statistic title="鏁存敼鏁�" :value="changeNum" /> - <el-statistic title="鏁存敼閫氳繃鏁�" :value="changePassNum" /> - <el-statistic title="闂鏁存敼鐜�" :value="changePer" /> - <el-statistic title="鏁存敼閫氳繃鐜�" :value="changePassPer" /> + <el-statistic title="闂/鏁存敼" :value="proNum + '/' + changePassNum" /> + <el-statistic title="鍗曞満鏅棶棰樺潎鍊�" :value="proEachSceneNum" /> + <!-- <el-statistic title="鏁存敼鏁�" :value="changeNum" /> --> + <!-- <el-statistic title="鏁存敼閫氳繃鏁�" :value="changePassNum" /> --> + <!-- <el-statistic title="鏁存敼鎻愪氦鐜�" :value="changePer" /> --> + <el-statistic title="鏁存敼鐜�/(鎻愪氦鐜�)" :value="changePassPer + '/' + changePer" /> </el-row> <!-- <el-row justify="space-between" class="p-h-16"> <el-statistic title="鏁存敼閫氳繃鏁�" :value="changePassNum" /> @@ -25,8 +25,8 @@ </el-text> --> </el-col> <!-- <el-col :span="6"> --> - <!-- <el-statistic title="鏈夋晥鏁存敼鐜�" :value="changePassPer" /> --> - <!-- <el-row justify="end"> + <!-- <el-statistic title="鏈夋晥鏁存敼鐜�" :value="changePassPer" /> --> + <!-- <el-row justify="end"> <OptionTime v-model="time"></OptionTime> </el-row> --> <!-- </el-col> --> @@ -58,14 +58,14 @@ if (this.proNum > 0) { return Math.round((this.changeNum / this.proNum) * 100) + '%' } else { - return '/' + return '-' } }, changePassPer() { if (this.proNum > 0) { return Math.round((this.changePassNum / this.proNum) * 100) + '%' } else { - return '/' + return '-' } } }, diff --git a/src/views/management/TaskStats.vue b/src/views/management/TaskStats.vue index 4b1860d..7092c58 100644 --- a/src/views/management/TaskStats.vue +++ b/src/views/management/TaskStats.vue @@ -9,7 +9,7 @@ <el-statistic title="鏈懆瀹屾垚" :value="10"> </el-statistic> </el-row> --> <!-- <el-row> --> - <TaskItem v-for="item in tasks" :key="item.guid" v-bind="item"></TaskItem> + <TaskItem v-for="item in tasks" :key="item.guid" :value="item"></TaskItem> <TaskSummary></TaskSummary> <!-- </el-row> --> @@ -26,6 +26,9 @@ </template> <script setup> +/** + * 1. 鎸夌収鍦烘櫙绫诲瀷杩涜缁熻灞曠ず + */ import { inject, ref, onMounted, computed } from 'vue' import { unCalc } from '@/utils/css-util' @@ -51,26 +54,24 @@ tInfoList.forEach((tInfo) => { const _sceneTaskMap = new Map() + // 鏈夊贰鏌ヨ繘搴︾殑鍦烘櫙绫诲瀷鐨勬�诲畬鎴愰噺锛堥拡瀵规煇浜涘満鏅被鍨嬩笉鍋氬贰鏌ヤ絾渚濇棫鍦ㄨ鍒掍腑鐨勬儏鍐碉級 + let _totaltask = 0, + _completetask = 0 + + // 灏嗗悇鍦烘櫙绫诲瀷鐨勫贰鏌ラ噺 for (const key in tInfo.totaltaskByScene) { const e = tInfo.totaltaskByScene[key] - _sceneTaskMap.set(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 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, @@ -78,6 +79,8 @@ district: tInfo.districtName, totaltask: tInfo.totaltask, completetask: tInfo.completetask, + _totaltask, + _completetask, count: [] } diff --git a/src/views/management/TaskSummary.vue b/src/views/management/TaskSummary.vue index 910d206..5317441 100644 --- a/src/views/management/TaskSummary.vue +++ b/src/views/management/TaskSummary.vue @@ -16,6 +16,9 @@ </template> <script setup> +/** + * 1. 鍖哄煙鍒嗙被缁熻鏇村姞鐏垫椿 + */ import * as echarts from 'echarts' import { ref, onMounted } from 'vue' import dayjs from 'dayjs' @@ -63,6 +66,9 @@ function fetchSubtaskThisWeek() { const area = getParams('week') + // 淇敼鏃舵涓哄懆涓�鍒板懆鏃� + area.starttime = dayjs(area.starttime).add(1, 'day').format('YYYY-MM-DD HH:mm:ss') + area.endtime = dayjs(area.endtime).add(1, 'day').format('YYYY-MM-DD HH:mm:ss') taskApi.fetchSubtaskSummaryByArea(area).then((res) => { subtaskWeek.value = res.data const series = refreshChartData(res.data) @@ -72,8 +78,9 @@ function fetchSubtaskLastWeek() { const area = getParams('week') - area.starttime = dayjs(area.starttime).add(-7, 'day').format('YYYY-MM-DD HH:mm:ss') - area.endtime = dayjs(area.endtime).add(-7, 'day').format('YYYY-MM-DD HH:mm:ss') + // 淇敼鏃舵涓哄懆涓�鍒板懆鏃� + area.starttime = dayjs(area.starttime).add(-6, 'day').format('YYYY-MM-DD HH:mm:ss') + area.endtime = dayjs(area.endtime).add(-6, 'day').format('YYYY-MM-DD HH:mm:ss') taskApi.fetchSubtaskSummaryByArea(area).then((res) => { subtaskLastWeek.value = res.data const series = refreshChartData(res.data) @@ -380,6 +387,6 @@ .bar-chart { width: 400px; - height: 600px; + height: 400px; } </style> -- Gitblit v1.9.3