| | |
| | | <template> |
| | | <el-space> |
| | | <el-descriptions :column="3" size="small" border direction="vertical"> |
| | | <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 |
| | | class="m-l-4" |
| | | :column="3" |
| | | size="small" |
| | | border |
| | | direction="vertical" |
| | | > |
| | | <el-descriptions-item |
| | | label="问题数" |
| | | label-class-name="problem-label" |
| | | class-name="secondary-content" |
| | | >{{ summary.proCount }}</el-descriptions-item |
| | | > |
| | | <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" |
| | | >{{ summary.changeCount }}</el-descriptions-item |
| | | > |
| | | <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 < 0.6 ? 'danger-content' : 'secondary-content'" |
| | | >{{ formatPercent(summary.changePer) }}</el-descriptions-item |
| | | :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 |
| | | class="m-l-4" |
| | | :column="8" |
| | | size="small" |
| | | border |
| | | direction="vertical" |
| | | > |
| | | <el-descriptions-item |
| | | label="巡查点次" |
| | | label="无问题" |
| | | label-class-name="pro-check-label" |
| | | class-name="secondary-content" |
| | | >{{ summary.total }}</el-descriptions-item |
| | | > |
| | | <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'" |
| | | >{{ summary.proUnCheck }}</el-descriptions-item |
| | | :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'" |
| | | >{{ summary.proPartCheck }}</el-descriptions-item |
| | | :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" |
| | | >{{ summary.proAllCheck }}</el-descriptions-item |
| | | > |
| | | </el-descriptions> |
| | | <el-descriptions :column="8" size="small" border direction="vertical"> |
| | | <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'" |
| | | >{{ summary.UnChange }}</el-descriptions-item |
| | | :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'" |
| | | >{{ summary.changeUnCheck }}</el-descriptions-item |
| | | :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'" |
| | | >{{ summary.changePartCheck }}</el-descriptions-item |
| | | :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" |
| | | >{{ summary.changeAllCheck }}</el-descriptions-item |
| | | > |
| | | <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, |
| | |
| | | |
| | | // 问题审核情况 |
| | | 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) { |
| | |
| | | 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++; |
| | |
| | | _summary.changePer = _summary.changeCount / _summary.proCount; |
| | | } |
| | | return _summary; |
| | | }, |
| | | // 巡查任务执行进度 |
| | | progress() { |
| | | const _res = { |
| | | total: 0, |
| | | completedScenes: 0, |
| | | completedTimes: 0, |
| | | reviewTimes: 0 |
| | | }; |
| | | |
| | | // Fixme 2025.5.30: 目前此处的监管版本信息钟记录的任务完成次数有偏差,所以暂时先改为通过巡查任务本身进行统计 |
| | | /**************************************************************************************/ |
| | | // 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; |
| | | // } |
| | | // } |
| | | // }); |
| | | /**************************************************************************************/ |
| | | |
| | | /**************************************************************************************/ |
| | | _res.total = this.monitorObjList.filter( |
| | | (m) => this.sceneType == undefined || m.sceneTypeId == this.sceneType |
| | | ).length; |
| | | _res.completedTimes = this.subtasks.length; |
| | | const map = new Map(); |
| | | const uniqueArr = []; |
| | | for (let item of this.subtasks) { |
| | | if (!map.has(item.data.sceneId)) { |
| | | map.set(item.data.sceneId, true); |
| | | uniqueArr.push(item); |
| | | } |
| | | } |
| | | _res.completedScenes = uniqueArr.length; |
| | | _res.reviewTimes = _res.completedTimes - _res.completedScenes; |
| | | |
| | | /**************************************************************************************/ |
| | | return _res; |
| | | } |
| | | }, |
| | | methods: { |
| | |
| | | /* 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(.problem-content) { |
| | | /* background: var(--el-color-danger-light-9); */ |
| | | } |
| | | |
| | | :deep(.pro-check-label) { |
| | | background: var(--el-color-success-light-7) !important; |
| | | } |
| | | :deep(.pro-check-content) { |
| | | background: var(--el-color-warning-light-7) !important; |
| | | } |
| | | |
| | | :deep(.change-check-label) { |
| | | background: var(--el-color-warning-light-7) !important; |
| | | } |
| | | :deep(.change-check-content) { |
| | | background: var(--el-color-danger-light-7) !important; |
| | | } |
| | | |
| | | :deep(.danger-content) { |