<template> <!-- 漏缆监测告警 --> <div class="leakage-cable"> <el-button-group> <el-button v-for="item in tabs" :key="item.key" :type="confirmStatus === item.key ? 'primary' : ''" @click="changeType(item)" >{{ item.label }}</el-button > </el-button-group> <div class="leakage-top"> <div style="color: #666666"></div> <div class="operate-btn"> <el-button type="primary" @click="getTableData">刷新</el-button> <el-button type="primary">查询</el-button> <el-button type="primary" @click="exportList">导出</el-button> </div> </div> <el-table :data="tableData" style="width: 100%" :cell-class-name="cellClassFn" :header-cell-style="{ background: '#EAF1FE', color: '#666666' }" > <el-table-column type="index" label="序列号" width="100" align="center" /> <el-table-column prop="siteName" label="基站名称" width="180" align="center" /> <el-table-column prop="alarmTarget" label="告警对象" width="180" align="center" /> <el-table-column prop="alarmLevelName" label="告警级别" width="150" align="center"> </el-table-column> <el-table-column prop="alarmInfo" label="告警信息" align="center" width="300" > <!-- <template slot-scope="scope"> <div v-for="(item, index) in scope.row.message.red" :key="index + 'red'" class="red message" > {{ item }} </div> <div v-for="(item, index) in scope.row.message.green" :key="index + 'green'" class="green message" > {{ item }} </div> <div v-for="(item, index) in scope.row.message.black" :key="index + 'black'" class="black message" > {{ item }} </div> </template> --> </el-table-column> <el-table-column prop="lateUploadTime" label="最新上传时间" align="center" width="105" /> <el-table-column prop="statusTimeChange" label="状态变化时间" align="center" width="105" /> <el-table-column prop="confirmPerson" label="确认人" align="center" /> <el-table-column prop="confirmTime" label="确认时间" align="center" /> <el-table-column label="操作" align="center" width="100"> <template slot-scope="scope"> <el-button type="text" v-if="scope.row.confirmStatus === 1">取消</el-button> <el-button type="text" v-else>确认</el-button> </template> </el-table-column> </el-table> <Pagination :limit="params.size" :page="params.current" :total="total" class="pagination" @pagination="handlePageChange" /> </div> </template> <script> import { cableTimeList, cableExport } from '../api' export default { data() { return { confirmStatus: 2, params: { current: 1, size: 10 }, total: 10, tableData: [], tabs: [ // 1:已确认,0:未确认 { label: '全部', key: 2 }, { label: '已确认', key: 1 }, { label: '未确认', key: 0 } ], }; }, methods: { // 表格背景图颜色 cellClassFn({ row, column, rowIndex, columnIndex }) { if (row.level == '紧急' && column.label == '告警级别') { return 'emergency' } else if (row.level == '重要' && column.label == '告警级别') { return 'important' } if (rowIndex % 2 == 1) { return 'stripe' } }, handlePageChange(pageData) { this.params.size = pageData.size this.params.current = pageData.page this.getTableData() }, getTableData(type) { let param = { confirmStatus: type, ...this.params } cableTimeList(param).then(res => { let list = res.records || [] this.tableData = list this.total = res.total }) }, changeType(item) { this.confirmStatus = item.key if(item.key == 2) { this.getTableData('') } else { this.getTableData(item.key) } }, exportList() { cableExport({confirmStatus: this.confirmStatus}).then(res => { }) }, }, mounted() { this.getTableData() }, }; </script> <style lang="scss" scoped> .leakage-cable { .leakage-top { margin-bottom: 20px; display: flex; align-items: flex-end; justify-content: space-between; } & ::v-deep .cell { color: #333333; } .message { line-height: 22px; } .red { color: red; } .green { color: green; } .black { color: black; } & ::v-deep .stripe { background-color: #eaf1fe; } & ::v-deep .emergency { background-color: #f00; } & ::v-deep .important { background-color: #f89850; } .page { display: flex; align-items: center; justify-content: center; margin: 20px 0; .pageNum { margin: 0 20px; } } } </style>