From 9169a74e1d7b2d24d20d708b4498d7ca17eda9d8 Mon Sep 17 00:00:00 2001 From: riku <risaku@163.com> Date: 星期一, 28 四月 2025 13:42:52 +0800 Subject: [PATCH] 1. 新增自动评估监测数据统计导入功能 2. 修改问题审核界面巡查点次统计没有根据场景类型切换的问题 --- src/views/fysp/check/components/CompSubTaskStatistic.vue | 321 +++++++++++++++++++++++++++++++++++++++++++---------- 1 files changed, 258 insertions(+), 63 deletions(-) diff --git a/src/views/fysp/check/components/CompSubTaskStatistic.vue b/src/views/fysp/check/components/CompSubTaskStatistic.vue index bdff289..7f8d3e9 100644 --- a/src/views/fysp/check/components/CompSubTaskStatistic.vue +++ b/src/views/fysp/check/components/CompSubTaskStatistic.vue @@ -1,64 +1,216 @@ <template> - <el-space> - <el-descriptions :column="3" size="small" border direction="vertical"> - <el-descriptions-item label="闂鏁�">{{ - summary.proCount - }}</el-descriptions-item> - <el-descriptions-item label="鏁存敼鏁�">{{ - summary.changeCount - }}</el-descriptions-item> - <el-descriptions-item label="鏁存敼鐜�">{{ - summary.changePer - }}</el-descriptions-item> + <el-row justify="end" v-loading="loading"> + <el-descriptions :column="4" size="small" border direction="vertical"> + <el-descriptions-item + label="鍦烘櫙鎬昏" + label-class-name="inspection-label" + class-name="secondary-content" + > + <template #label> + <el-text size="small"> 鍦烘櫙鎬昏 </el-text> + </template> + {{ progress.total }} + </el-descriptions-item> + <el-descriptions-item + label="宸℃煡鍦烘櫙" + label-class-name="inspection-label" + class-name="secondary-content" + > + <template #label> + <el-text size="small"> 宸℃煡鍦烘櫙 </el-text> + </template> + {{ progress.completedScenes }} + </el-descriptions-item> + <el-descriptions-item + label="宸℃煡鐐规" + label-class-name="inspection-label" + class-name="secondary-content" + > + <template #label> + <el-text size="small"> 宸℃煡鐐规 </el-text> + </template> + {{ progress.completedTimes }} + </el-descriptions-item> + <el-descriptions-item + label="澶嶆煡鐐规" + label-class-name="inspection-label" + class-name="secondary-content" + > + <template #label> + <el-text size="small"> 澶嶆煡鐐规 </el-text> + </template> + {{ progress.reviewTimes }} + </el-descriptions-item> </el-descriptions> - <el-descriptions :column="8" size="small" border direction="vertical"> - <el-descriptions-item label="宸℃煡鐐规">{{ - summary.total - }}</el-descriptions-item> - <el-descriptions-item label="闂鏈鏍�">{{ - summary.proUnCheck - }}</el-descriptions-item> - <el-descriptions-item label="閮ㄥ垎瀹℃牳">{{ - summary.proPartCheck - }}</el-descriptions-item> - <el-descriptions-item label="鍏ㄩ儴瀹℃牳">{{ - summary.proAllCheck - }}</el-descriptions-item> + + <el-descriptions + class="m-l-4" + :column="3" + size="small" + border + direction="vertical" + > + <el-descriptions-item + label="闂鏁�" + label-class-name="problem-label" + class-name="secondary-content" + > + <template #label> + <el-text size="small"> 闂鏁� </el-text> + </template> + {{ summary.proCount }} + </el-descriptions-item> + <el-descriptions-item + label="鏁存敼鏁�" + label-class-name="problem-label" + class-name="secondary-content" + > + <template #label> + <el-text size="small"> 鏁存敼鏁� </el-text> + </template> + {{ summary.changeCount }} + </el-descriptions-item> + <el-descriptions-item + label="鏁存敼鐜�" + label-class-name="problem-label" + :class-name=" + summary.changePer < 1 ? 'danger-content' : 'secondary-content' + " + > + <template #label> + <el-text size="small"> 鏁存敼鐜� </el-text> + </template> + {{ formatPercent(summary.changePer) }} + </el-descriptions-item> </el-descriptions> - <el-descriptions :column="8" size="small" border direction="vertical"> - <el-descriptions-item label="鏈暣鏀�">{{ - summary.UnChange - }}</el-descriptions-item> - <el-descriptions-item label="鏁存敼鏈鏍�">{{ - summary.changeUnCheck - }}</el-descriptions-item> - <el-descriptions-item label="閮ㄥ垎瀹℃牳">{{ - summary.changePartCheck - }}</el-descriptions-item> - <el-descriptions-item label="鍏ㄩ儴瀹℃牳">{{ - summary.changeAllCheck - }}</el-descriptions-item> + + <el-descriptions + class="m-l-4" + :column="8" + size="small" + border + direction="vertical" + > + <el-descriptions-item + label="鏃犻棶棰�" + label-class-name="pro-check-label" + class-name="secondary-content" + > + <template #label> + <el-text size="small"> 鏃犻棶棰� </el-text> + </template> + {{ summary.noProblem }} + </el-descriptions-item> + <el-descriptions-item + label="闂鏈鏍�" + label-class-name="pro-check-label" + :class-name=" + summary.proUnCheck > 0 ? 'danger-content' : 'secondary-content' + " + > + <template #label> + <el-text size="small"> 闂鏈鏍� </el-text> + </template> + {{ summary.proUnCheck }} + </el-descriptions-item> + <el-descriptions-item + label="閮ㄥ垎瀹℃牳" + label-class-name="pro-check-label" + :class-name=" + summary.proPartCheck > 0 ? 'danger-content' : 'secondary-content' + " + > + <template #label> + <el-text size="small"> 閮ㄥ垎瀹℃牳 </el-text> + </template> + {{ summary.proPartCheck }} + </el-descriptions-item> + <el-descriptions-item + label="鍏ㄩ儴瀹℃牳" + label-class-name="pro-check-label" + class-name="secondary-content" + > + <template #label> + <el-text size="small"> 鍏ㄩ儴瀹℃牳 </el-text> + </template> + {{ summary.proAllCheck }} + </el-descriptions-item> + <!-- </el-descriptions> + <el-descriptions + :column="4" + size="small" + border + direction="vertical" + > --> + <el-descriptions-item + label="鏈暣鏀�" + label-class-name="change-check-label" + :class-name=" + summary.UnChange > 0 ? 'danger-content' : 'secondary-content' + " + > + <template #label> + <el-text size="small"> 鏈暣鏀� </el-text> + </template> + {{ summary.UnChange }} + </el-descriptions-item> + <el-descriptions-item + label="鏁存敼鏈鏍�" + label-class-name="change-check-label" + :class-name=" + summary.changeUnCheck > 0 ? 'danger-content' : 'secondary-content' + " + > + <template #label> + <el-text size="small"> 鏁存敼鏈鏍� </el-text> + </template> + {{ summary.changeUnCheck }} + </el-descriptions-item> + <el-descriptions-item + label="閮ㄥ垎瀹℃牳" + label-class-name="change-check-label" + :class-name=" + summary.changePartCheck > 0 ? 'danger-content' : 'secondary-content' + " + > + <template #label> + <el-text size="small"> 閮ㄥ垎瀹℃牳 </el-text> + </template> + {{ summary.changePartCheck }} + </el-descriptions-item> + <el-descriptions-item + label="鍏ㄩ儴瀹℃牳" + label-class-name="change-check-label" + class-name="secondary-content" + > + <template #label> + <el-text size="small"> 鍏ㄩ儴瀹℃牳 </el-text> + </template> + {{ summary.changeAllCheck }} + </el-descriptions-item> </el-descriptions> - </el-space> - <!-- <el-space> - <el-tag v-for="(s, i) in summary" :key="i" :type="s.type" size="small"> - <el-icon v-if="s.icon" color=""> - <component :is="s.icon"></component> - </el-icon> - {{ s.name + ': ' + s.value }} - </el-tag> - </el-space> --> + </el-row> </template> <script> export default { props: { - subtasks: Array + loading: Boolean, + sceneType: Number, + subtasks: { + type: Array, + default: () => [] + }, + monitorObjList: { + type: Array, + default: () => [] + } }, computed: { //浠诲姟闂瀹℃牳鎯呭喌缁熻淇℃伅 summary() { const _summary = { total: 0, + noProblem: 0, proUnCheck: 0, proPartCheck: 0, proAllCheck: 0, @@ -68,7 +220,7 @@ changeAllCheck: 0, proCount: 0, changeCount: 0, - changePer: '0%' + changePer: 0 }; this.subtasks.forEach((s) => { _summary.total++; @@ -77,7 +229,7 @@ // 闂瀹℃牳鎯呭喌 if (s.data.proNum == 0) { - _summary.proAllCheck++; + _summary.noProblem++; } else if (s.data.proCheckedNum == 0) { _summary.proUnCheck++; } else if (s.data.proCheckedNum < s.data.proNum) { @@ -90,10 +242,9 @@ if (s.data.changeNum < s.data.proNum) { _summary.UnChange++; } - // 鏁存敼瀹℃牳鎯呭喌 - if (s.data.proNum == 0) { - _summary.changeAllCheck++; + else if (s.data.proNum == 0) { + // _summary.changeAllCheck++; } else if (s.data.changeNum > 0) { if (s.data.changeCheckedNum == 0) { _summary.changeUnCheck++; @@ -106,19 +257,35 @@ }); if (_summary.proCount != 0) { - _summary.changePer = - Math.round((_summary.changeCount / _summary.proCount) * 1000) / 10 + - '%'; + _summary.changePer = _summary.changeCount / _summary.proCount; } - // _summary.forEach((s, i) => { - // if (i > 0) { - // let per = Math.round((s.value / _summary[0].value) * 1000) / 10 - // if (isNaN(per)) per = 0 - // s.value = `${s.value}(${per}%)` - // } - // }) - return _summary; + }, + // 宸℃煡浠诲姟鎵ц杩涘害 + progress() { + const _res = { + total: 0, + completedScenes: 0, + completedTimes: 0, + reviewTimes: 0 + }; + this.monitorObjList.forEach((m) => { + if (this.sceneType == undefined || m.sceneTypeId == this.sceneType) { + _res.total++; + const times = parseInt(m.extension1); + if (times) { + _res.completedScenes++; + _res.completedTimes += times; + _res.reviewTimes += times - 1; + } + } + }); + return _res; + } + }, + methods: { + formatPercent(value) { + return Math.round(value * 1000) / 10 + '%'; } } }; @@ -128,4 +295,32 @@ padding: 0px 4px !important; /* font-size: 13px !important; */ } + +:deep(.inspection-label) { + background: var(--el-color-success-light-5) !important; + /* color: white !important; */ +} + +:deep(.problem-label) { + background: var(--el-color-primary-light-7) !important; +} + +:deep(.pro-check-label) { + background: var(--el-color-warning-light-7) !important; +} + +:deep(.change-check-label) { + background: var(--el-color-danger-light-7) !important; +} + +:deep(.danger-content) { + color: var(--el-color-danger) !important; + font-weight: 600 !important; + font-size: 17px !important; +} + +:deep(.secondary-content) { + color: var(--el-text-color-regular) !important; + font-size: 12px !important; +} </style> -- Gitblit v1.9.3