叶松
2023-09-27 e1e25f4f7fa6b7e31c7f0567cc3744fb3ee6ba98
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
<template>
  <div class="main">
    <div class="main_header">
      <div class="header_item">
        <span class="header_label">考核名称:</span>
        <el-input v-model="examName" clearable placeholder="请输入考核名称"></el-input>
      </div>
      <div class="header_item">
        <el-button v-if="showButton('search')" icon="el-icon-search" @click="searchSafetycheckList(true)">查询</el-button>
      </div>
    </div>
    <div class="main_content">
      <el-table
        v-loading="loading"
        :data="safetycheckList"
        height="100%">
        <el-table-column label="序号" width="60" align="center">
          <template #default="scope">
            <span>{{(pageNum - 1) * pageSize + scope.$index + 1}}</span>
          </template>
        </el-table-column>
        <el-table-column prop="examName" label="考核名称" width="180" align="center"></el-table-column>
        <el-table-column prop="planUserCount" label="应考人数" align="center"></el-table-column>
        <el-table-column prop="totalUserCount" label="实考人数" align="center"></el-table-column>
        <el-table-column prop="noExamUserCount" label="缺考人数" align="center"></el-table-column>
        <el-table-column prop="passUserCount" label="合格人数" align="center"></el-table-column>
        <el-table-column prop="noPassUserCount" label="不合格人数" align="center"></el-table-column>
        <el-table-column label="考核记录列表" align="center">
          <template #default="{ row }">
            <el-button class="table_btn" size="mini" @click="exportExcel(row)">列表下载</el-button>
          </template>
        </el-table-column>
        <el-table-column label="操作" align="center">
          <template #default="{ row }">
            <el-button class="table_btn" size="mini" @click="exportReport(row)">生成报告</el-button>
          </template>
        </el-table-column>
      </el-table>
    </div>
    <div class="main_footer">
      <el-pagination
        background
        @current-change="changePageNum"
        @size-change="changePageSize"
        :current-page="pageNum"
        :page-sizes="[10, 20, 50, 100]"
        :page-size="pageSize"
        layout="total, sizes, prev, pager, next, jumper"
        :total="total">
      </el-pagination>
    </div>
  </div>
</template>
 
<script>
import { buttonPinia } from '../../../pinia';
import { downLoadFile } from '../../../plugins/public';
  export default {
    data() {
      return {
        examName: '',
        loading: false,
        pageNum: 1,
        pageSize: 10,
        total: 0,
        safetycheckList: [],
      }
    },
    mounted() {
      this.searchSafetycheckList(true);
    },
    methods: {
      // 查询安全考核报表信息
      searchSafetycheckList(bol) {
        if(bol) {
          this.pageNum = 1;
        }
        this.loading = true;
        this.safetycheckList = [];
        this.$api.Report.searchSafetyCheckReport({
          pageNum: this.pageNum,
          pageSize: this.pageSize,
          examName: this.examName
        }).then((res) => {
          if(res.success) {
            this.total = res.data.total;
            this.safetycheckList = res.data.list;
          }
          this.loading = false;
        }).catch(() => {
          this.loading = false;
        })
      },
      // 列表下载
      exportExcel(item) {
        this.$api.System.GETEXPORTTOKENDATA({
          examName: this.examName,
          examId: item.examId
        }).then((res) => {
          if(res.success) {
            downLoadFile(res.data, '/secure/exam/examRecordDown');
          }
        })
      },
      // 生成报告
      exportReport() {
        console.log('生成报告');
      },
      // 切换页码
      changePageNum(page) {
        this.pageNum = page;
        this.searchSafetycheckList();
      },
      // 切换每页条数
      changePageSize(size) {
        this.pageSize = size;
        this.searchSafetycheckList();
      },
      // 判断按钮权限信息
      showButton(str) {
        const pinia = buttonPinia();
        return pinia.$state.buttonInfo.includes(str);
      }
    }
  }
</script>
 
<style lang="scss" scoped>
@import '@/style/layout-main.scss';
</style>