xiangpei
2024-04-29 6302914c8e172caded459676482016a9e6cffb8b
src/views/system/result/detail/index1.vue
@@ -3,8 +3,8 @@
    <div>
      <el-menu :default-active="activeIndex" class="el-menu-demo" mode="horizontal" @select="handleSelect"
        style="margin-bottom: 10px">
        <el-menu-item index="1">省厅考核</el-menu-item>
        <el-menu-item index="2">区域考核</el-menu-item>
        <el-menu-item index="0">省厅考核</el-menu-item>
        <el-menu-item index="1">区域考核</el-menu-item>
      </el-menu>
    </div>
@@ -26,8 +26,8 @@
      </el-card>
    </div>
    <div style="margin-top: 35px">
      <el-table :data="tableData" style="width: 100%" v-loading="loading">
    <div style="margin-top: 35px;margin-bottom: 35px">
      <el-table :data="tableData" style="width: 100%" v-loading="tableLoading">
        <el-table-column label="考核时间" prop="createTime" align="center">
        </el-table-column>
        <el-table-column label="考核对象" prop="deptId" align="center">
@@ -55,26 +55,22 @@
          <template slot-scope="scope">
            <el-button size="small" type="text" v-show="scope.row.publish != 1">确认发布</el-button>
            <el-button size="small" type="text" v-show="scope.row.publish == 1">取消发布</el-button>
            <el-button size="mini" type="text" icon="el-icon-view"
              @click="handleDetail(scope.row, scope.index)">详细</el-button>
            <el-button size="mini" type="text" icon="el-icon-view" @click="handleDetail(scope.row.id)">详细</el-button>
          </template>
        </el-table-column>
      </el-table>
    </div>
    <div style="text-align: right; margin-top: 10px">
      <el-pagination @size-change="handleSizeChange" @current-change="handleCurrentChange" :current-page="currentPage4"
        :page-sizes="[5, 10, 20]" :page-size="5" layout="total, sizes, prev, pager, next, jumper" :total="4">
      </el-pagination>
      <pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNum" :limit.sync="queryParams.pageSize"
        @pagination="getList" />
    </div>
  </div>
</template>
<script>
import { listScore, getScore, delScore, addScore, updateScore, publishScore } from "@/api/platform/check-score";
import { listScore, getScore, delScore, addScore, updateScore, publishScore, detailScore } from "@/api/platform/check-score";
import { areaSelect } from '@/api/system/dept';
import { mapState } from 'vuex';
import * as echarts from 'echarts';
let lineChart = null;
let observer = null;
@@ -83,38 +79,21 @@
  dicts: ['platform_examine_use', 'platform_examine_category'],
  data() {
    return {
      activeIndex: '1',
      activeIndex2: '2',
      activeIndex: '0',
      areaList: [],
      date: '',
      dateRange: '',
      company: '',
      // 总条数
      total: 0,
      queryParams: {
        pageNum: 1,
        pageSize: 10,
        deptId: null,
        examineTag: 0
      },
      dataList: [
        {
          name: '全部',
          complete: {
            '4.5': 95.5, '4.6': 95.3, '4.7': 96.0, '4.8': 97.2, '4.9': 96.5,
            '4.10': 95.5, '4.11': 95.3, '4.12': 96.0, '4.13': 97.2, '4.14': 96.5,
            '4.15': 95.5, '4.16': 95.3, '4.17': 96.0, '4.18': 97.2, '4.19': 96.5,
            '4.20': 95.5, '4.21': 95.3, '4.22': 96.0, '4.23': 97.2, '4.24': 96.5,
            '4.25': 95.5, '4.26': 95.3, '4.27': 96.0, '4.28': 97.2, '4.29': 96.5
          },
          waiting: {
            '4.5': 94.8, '4.6': 91.3, '4.7': 95.3, '4.8': 92.3, '4.9': 93.3,
            '4.10': 94.8, '4.11': 91.3, '4.12': 95.3, '4.13': 92.3, '4.14': 93.3
          },
          pending: {
            '4.5': 91.6, '4.6': 92.6, '4.7': 93.7, '4.8': 94.0, '4.9': 95.9
            , '4.10': 91.6, '4.11': 92.6, '4.12': 93.7, '4.13': 94.0, '4.14': 95.9
          }
        }
      ],
      tableData: [],
      loading: false,
      tableLoading: false,
      searchForm: {
        time: null,
      }
@@ -130,13 +109,12 @@
    const year = date.getFullYear();
    const month = (date.getMonth() + 1) >= 10 ? date.getMonth() + 1 : '0' + (date.getMonth() + 1);
    this.date = year + '-' + month;
    console.log(this.date);
    this.queryParams.date = this.date;
    this.getList(this.$route.query.index);
    this.areaSelect();
    this.getList(this.$route.query.index);
  },
  computed: {
    ...mapState('dict', ['dict'])
  },
  methods: {
    // 区域下拉数据
@@ -151,17 +129,27 @@
    },
    /** 导航切换 */
    handleSelect(key) {
      this.activeIndex = key; // 更新当前激活的菜单项
      this.getList();
      this.activeIndex = key;
      this.queryParams.examineTag = key;
      this.getChart(this.queryParams.deptId);
      this.getList(this.queryParams.deptId);
    },
    /** 查询考核模板列表 */
    getList(deptId) {
    getChart(deptId) {
      this.loading = true;
      lineChart.showLoading();
      listScore(this.queryParams).then(response => {
        this.tableData = response.data[deptId];
        this.loading = false;
        this.initChart(response.data[deptId]);
        this.loading = false;
      });
    },
    /** 查询考核模板列表 */
    getList() {
      this.tableLoading = true;
      detailScore(this.queryParams).then(response => {
        this.tableData = response.rows;
        this.total = response.total;
        this.tableLoading = false;
      });
    },
    handleSizeChange(val) {
@@ -170,9 +158,13 @@
    handleCurrentChange(val) {
      console.log(`当前页: ${val}`);
    },
    handleDetail(index, row) {
      console.log(index, row);
      this.$router.push("/examine/detail/detail")
    handleDetail(id) {
      this.$router.push({
        path: '/examine/detail/detail',
        query: {
          id: id,
        }
      })
    },
    handleDelete(index, row) {
      console.log(index, row);
@@ -199,12 +191,12 @@
          data: dataList.map((item) => item[0]),
        },
        yAxis: {
          min: 90,
          min: 'dataMin'
        },
        series: [
          {
            name: '车辆考核',
            data: this.filterData(dataList,0),
            data: this.filterData(dataList, 0),
            type: 'line',
            itemStyle: {
              color: 'rgba(62, 144, 247, 1)'
@@ -212,7 +204,7 @@
          },
          {
            name: '人脸考核',
            data: this.filterData(dataList,1),
            data: this.filterData(dataList, 1),
            type: 'line',
            itemStyle: {
              color: 'rgba(85, 192, 191, 1)'
@@ -220,7 +212,7 @@
          },
          {
            name: '视频考核',
            data: this.filterData(dataList,2),
            data: this.filterData(dataList, 2),
            type: 'line',
            itemStyle: {
              color: 'rgba(255, 165, 0, 1)'
@@ -229,30 +221,47 @@
        ]
      };
      lineChart.setOption(option, true);
      lineChart.hideLoading();
    },
    groupByData(data) {
      if(!data) return [];
      if (!data) return this.getAllDay().map((item) => [item, []]);
      const tempGroup = {};
      data.forEach((item) => {
        const { createTime } = item;
        let { createTime } = item;
        let tempTime = createTime.split('-');
        createTime = tempTime[1] + '-' + tempTime[2];
        if (!tempGroup[createTime]) {
          tempGroup[createTime] = [];
        }
        tempGroup[createTime].push(item);
      })
      const tempArray = Object.entries(tempGroup).sort(([keyA], [keyB]) => new Date([keyA]) - new Date([keyB]));
      return tempArray;
    },
    filterData(data,tag) {
      if(!data) return [0];
    filterData(data, tag) {
      const scoreList = data.map((item) => {
        let temp = item[1].find((exam) => exam.examineCategory === tag);
        return temp.score;
        if (temp) {
          return temp.score;
        } else {
          return;
        }
      });
      console.log(scoreList);
      return scoreList;
    },
    getAllDay() {
      const currentDate = this.date.split('-');
      const currentYear = currentDate[0];
      const currentMonth = currentDate[1];
      const daysInMonth = new Date(currentYear, currentMonth, 0).getDate();
      const datesOfMonth = [];
      for (var day = 1; day <= daysInMonth; day++) {
        const formattedDate = currentMonth + '-' + (day.toString().padStart(2, '0'));
        datesOfMonth.push(formattedDate);
      }
      return datesOfMonth;
    },
    // 监听变化
@@ -273,16 +282,14 @@
    dateChange() {
      this.queryParams.date = this.date;
      console.log(this.queryParams);
      this.getChart(this.queryParams.deptId);
      this.getList(this.queryParams.deptId);
    }
  },
  mounted() {
    this.acitveData = this.dataList[0];
    this.company = this.acitveData.name;
    lineChart = echarts.init(this.$refs.chartContent);
    this.initChart();
    this.getChart(this.$route.query.index);
    this.observe();
  },
  beforeDestroy() {