src/views/fysp/check/components/CompSubTaskStatistic.vue
@@ -1,97 +1,216 @@
<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,
@@ -110,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) {
@@ -123,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++;
@@ -142,6 +260,27 @@
        _summary.changePer = _summary.changeCount / _summary.proCount;
      }
      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: {
@@ -157,23 +296,21 @@
  /* 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) {