418 lines
14 KiB
Vue
418 lines
14 KiB
Vue
<template>
|
||
<div>
|
||
<el-form :inline="true" :model="ruleForm" class="demo-form-inline">
|
||
<el-form-item>
|
||
<Area @click="handleNodeClick" ref="area"></Area>
|
||
</el-form-item>
|
||
<el-form-item label=" 终端名称:">
|
||
<el-input v-model="ruleForm.name" clearable placeholder="请输入终端名称"></el-input>
|
||
</el-form-item>
|
||
<el-form-item label="生产厂家:">
|
||
<el-select
|
||
v-model="ruleForm.manufacture"
|
||
placeholder="请选择生产厂家"
|
||
multiple
|
||
collapse-tags
|
||
clearable
|
||
class="select"
|
||
>
|
||
<el-option
|
||
v-for="item in manufactorList"
|
||
:key="item.id"
|
||
:label="item.name"
|
||
:value="item.id"
|
||
></el-option>
|
||
</el-select>
|
||
</el-form-item>
|
||
<el-form-item label="检测结果:">
|
||
<el-select v-model="ruleForm.testResults" placeholder="请选择检测结果" clearable class="select">
|
||
<el-option
|
||
v-for="item in testResultsList"
|
||
:key="item.id"
|
||
:label="item.name"
|
||
:value="item.id"
|
||
></el-option>
|
||
</el-select>
|
||
</el-form-item>
|
||
<el-form-item>
|
||
<el-button type="primary" class="ml10" icon="el-icon-search" @click="Monitoring">查询</el-button>
|
||
|
||
<el-button type="primary" icon="el-icon-download" @click="exportEvent">导出</el-button>
|
||
</el-form-item>
|
||
<el-form-item>
|
||
<el-form-item>
|
||
<el-button @click="UploadDetection" type="primary" icon="el-icon-upload2">上传检测报告</el-button>
|
||
</el-form-item>
|
||
</el-form-item>
|
||
</el-form>
|
||
|
||
<vxe-table
|
||
:data="totalData"
|
||
:height="height"
|
||
border
|
||
:row-config="{ isCurrent: true, isHover: true }"
|
||
size="mini"
|
||
ref="Monitoringpoint"
|
||
style="width: 100%"
|
||
v-loading="isLoading"
|
||
header-cell-class-name="table_header"
|
||
@checkbox-change="handleSelectionChange"
|
||
>
|
||
<vxe-table-column align="center" type="checkbox" width="55"></vxe-table-column>
|
||
|
||
<vxe-table-column
|
||
v-for="(item, index) in tableHeaderMonitoring"
|
||
align="center"
|
||
:field="item.prop"
|
||
:title="item.label"
|
||
:min-width="item.width"
|
||
:key="index"
|
||
:formatter="formFilter"
|
||
:show-overflow="true"
|
||
></vxe-table-column>
|
||
<vxe-column title="操作" width="320" align="center">
|
||
<template #default="{ row }">
|
||
<el-button
|
||
type="primary"
|
||
size="mini"
|
||
@click="download(row, 0)"
|
||
icon="el-icon-download"
|
||
:disabled="row.originalReport == null"
|
||
>
|
||
下载原始数据报告
|
||
</el-button>
|
||
<el-button
|
||
type="primary"
|
||
size="mini"
|
||
@click="download(row, 1)"
|
||
icon="el-icon-download"
|
||
:disabled="row.inspectionReport == null"
|
||
>
|
||
下载检测报告
|
||
</el-button>
|
||
</template>
|
||
</vxe-column>
|
||
</vxe-table>
|
||
<el-pagination
|
||
background
|
||
align="right"
|
||
@size-change="handleSizeChange"
|
||
@current-change="handleCurrentChange"
|
||
:current-page="ruleForm.pageNum"
|
||
:page-sizes="[20, 30, 40, 50, 100]"
|
||
:page-size="ruleForm.pageSize"
|
||
layout="total, sizes, prev, pager, next, jumper"
|
||
:total="total"
|
||
class="mt10"
|
||
></el-pagination>
|
||
<el-dialog
|
||
:close-on-click-modal="false"
|
||
:title="titles"
|
||
:visible.sync="showBatchUpload"
|
||
width="30%"
|
||
:before-close="handleClose"
|
||
>
|
||
<el-upload
|
||
multiple
|
||
action="#"
|
||
:http-request="TerminalUpload"
|
||
:limit="999"
|
||
accept="doc"
|
||
:before-remove="beforeRemove"
|
||
:before-upload="handleBeforeUpload"
|
||
:on-error="handleUploadError"
|
||
:file-list="fileList"
|
||
:headers="headers"
|
||
class="upload-file-uploader"
|
||
ref="upload"
|
||
>
|
||
<el-button @click="fileType = ['doc']" type="primary" icon="el-icon-upload2">选择文件</el-button>
|
||
<span :style="`color:#f58003`"> (*传入的检测报告文件格式(终端编号-检测报告(yyyy-MM-dd).docx))</span>
|
||
</el-upload>
|
||
<span slot="footer" class="dialog-footer">
|
||
<el-button @click="handleClose">取 消</el-button>
|
||
<el-button type="primary" @click="BatchUpload">上 传</el-button>
|
||
</span>
|
||
</el-dialog>
|
||
</div>
|
||
</template>
|
||
|
||
<script>
|
||
// import {deptTree} from '@/api/admin/dept'
|
||
import { getTerminalPage, importReport, reportDownload } from '@/api/Process-supervision/Terminaldetection/index.js'
|
||
|
||
import Area from '@/views/components/Area/Area.vue'
|
||
import { dicData } from '@/assets/commjs/dictypeData'
|
||
export default {
|
||
components: { Area },
|
||
data() {
|
||
return {
|
||
headers: {
|
||
Authorization: window.sessionStorage.getItem('cntoken')
|
||
}, // 设置上传的请求头部
|
||
vh: '',
|
||
title: '',
|
||
// 查询数据
|
||
titles: '',
|
||
ruleForm: {
|
||
name: '',
|
||
type: 1,
|
||
id: JSON.parse(window.sessionStorage.getItem('Info')).deptId,
|
||
manufacture: [],
|
||
testResults: '',
|
||
pageNum: 1,
|
||
pageSize: 20
|
||
},
|
||
total: 0,
|
||
height: null,
|
||
isLoading: false,
|
||
|
||
multipleSelection: [],
|
||
testResultsList: [
|
||
{
|
||
id: 0,
|
||
name: '未展开'
|
||
},
|
||
{
|
||
id: 1,
|
||
name: '已展开'
|
||
}
|
||
],
|
||
fileList: [],
|
||
fileType: [],
|
||
uploadType: '',
|
||
showBatchUpload: false,
|
||
manufactorList: [],
|
||
//台区台账表头
|
||
tableHeaderMonitoring: [
|
||
{ prop: 'id', label: '终端编号', width: 120 },
|
||
{ prop: 'name', label: '上产厂家', width: 180 },
|
||
{ prop: 'orgName', label: '安装位置', width: 150 },
|
||
{ prop: 'inspectionUnit', label: '送检单位', width: 150 },
|
||
{ prop: 'testResults', label: '检测结果', width: 120 },
|
||
{ prop: 'nextInspectionTime', label: '下次监测时间', width: 170 }
|
||
],
|
||
totalData: [],
|
||
monitorStateList: [], //监测点状态
|
||
monitorTypeList: [], //监测点类型
|
||
potentialTransFormerTypeList: [], //电压互感器类型
|
||
neutralGroundingModeList: [] //中性点接地方式
|
||
}
|
||
},
|
||
created() {
|
||
this.getclassificationData()
|
||
},
|
||
|
||
mounted() {
|
||
this.setHeight()
|
||
window.addEventListener('resize', this.setHeight)
|
||
this.Monitoring()
|
||
},
|
||
beforeDestroy() {
|
||
window.removeEventListener('resize', this.setHeight)
|
||
},
|
||
methods: {
|
||
setHeight() {
|
||
this.height = window.sessionStorage.getItem('appheight') - 217
|
||
},
|
||
//获取类型
|
||
getclassificationData() {
|
||
//监测点状态
|
||
this.monitorStateList = dicData('Line_State', [])
|
||
//监测点类型
|
||
this.monitorTypeList = dicData('Line_Type', [])
|
||
//电压互感器类型
|
||
this.potentialTransFormerTypeList = dicData('Voltage_Transformer', [])
|
||
//中性点接地方式
|
||
this.neutralGroundingModeList = dicData('Neutral_Point', [])
|
||
//监测点标签
|
||
this.resultList = dicData('Monitoring_Labels', [])
|
||
//生产厂家
|
||
//生产厂家
|
||
this.manufactorList = dicData('Dev_Manufacturers', [])
|
||
this.manufactorList.forEach(item => {
|
||
this.ruleForm.manufacture.push(item.id)
|
||
})
|
||
},
|
||
|
||
//查询用户用电信息
|
||
Monitoring() {
|
||
getTerminalPage(this.ruleForm).then(res => {
|
||
this.totalData = res.data.records
|
||
this.isLoading = false
|
||
})
|
||
},
|
||
// 数据过滤
|
||
formFilter(row, column) {
|
||
if (row.column.property == 'testResults') {
|
||
return row.row.testResults == 0 ? '未展开' : '已展开'
|
||
} else {
|
||
return row.row[row.column.property]
|
||
}
|
||
},
|
||
// 区域勾选
|
||
handleNodeClick(data) {
|
||
this.ruleForm.id = data.id
|
||
},
|
||
//数据上传
|
||
upload() {
|
||
if (this.multipleSelection.length == 0) {
|
||
this.$message({
|
||
showClose: true,
|
||
message: '请选择台账!!!',
|
||
type: 'warning'
|
||
})
|
||
return
|
||
}
|
||
this.$message({
|
||
showClose: true,
|
||
message: '上传成功!!!',
|
||
type: 'success'
|
||
})
|
||
},
|
||
// 重置
|
||
Reset() {
|
||
// 查询数据
|
||
this.ruleForm.searchValue = ''
|
||
},
|
||
|
||
//checkbox选择事件
|
||
handleSelectionChange(row) {
|
||
this.multipleSelection = row.records
|
||
},
|
||
|
||
//每页条数改变时触发 选择一页显示多少行
|
||
handleSizeChange(val) {
|
||
this.ruleForm.pageSize = val
|
||
this.Monitoring()
|
||
},
|
||
//当前页改变时触发 跳转其他页
|
||
handleCurrentChange(val) {
|
||
this.ruleForm.pageNum = val
|
||
this.Monitoring()
|
||
},
|
||
// 上传报告
|
||
TerminalUpload(params) {
|
||
this.fileList.push(params.file)
|
||
|
||
// form.append("files", params.file);
|
||
},
|
||
//导出
|
||
exportEvent() {
|
||
this.$refs.Monitoringpoint.exportData({
|
||
filename: 'export', // 文件名字
|
||
sheetName: 'Sheet1',
|
||
type: 'xlsx', //导出文件类型 xlsx 和 csv
|
||
useStyle: true,
|
||
data: this.totalData, // 数据源 // 过滤那个字段导出 //
|
||
columnFilterMethod: function (column, $columnIndex) {
|
||
return !(column.$columnIndex === 0 || column.$columnIndex === 7)
|
||
}
|
||
})
|
||
},
|
||
beforeRemove(file, fileList) {
|
||
this.fileList = fileList
|
||
},
|
||
// 上传前校检格式和大小
|
||
handleBeforeUpload(file) {
|
||
// 校检文件类型
|
||
if (this.fileType) {
|
||
let fileExtension = ''
|
||
if (file.name.lastIndexOf('.') > -1) {
|
||
fileExtension = file.name.slice(file.name.lastIndexOf('.') + 1)
|
||
}
|
||
const isTypeOk = this.fileType.some(type => {
|
||
if (file.type.indexOf(type) > -1) return true
|
||
return !!(fileExtension && fileExtension.indexOf(type) > -1)
|
||
})
|
||
if (!isTypeOk) {
|
||
this.$message.error(`文件格式不正确, 请上传${this.fileType.join('/')}格式文件!`)
|
||
return false
|
||
}
|
||
}
|
||
|
||
this.$message('正在上传文件,请稍候...')
|
||
this.number++
|
||
return true
|
||
},
|
||
// 上传检测报告
|
||
UploadDetection() {
|
||
this.fileType = ['doc']
|
||
this.titles = '上传检测报告__支持批量上传'
|
||
this.uploadType = 1
|
||
this.showBatchUpload = true
|
||
},
|
||
// 关闭上传弹框
|
||
handleClose() {
|
||
this.fileList = []
|
||
this.showBatchUpload = false
|
||
},
|
||
// 上传失败
|
||
handleUploadError(err) {
|
||
this.$message.error(err)
|
||
},
|
||
BatchUpload() {
|
||
let form = new FormData()
|
||
form.append('type', this.uploadType)
|
||
this.fileList.forEach(item => {
|
||
form.append('files', item)
|
||
})
|
||
importReport(form)
|
||
.then(res => {
|
||
if (res.type == 'application/json') {
|
||
this.$message({
|
||
message: '上传成功!',
|
||
type: 'success'
|
||
})
|
||
this.handleClose()
|
||
this.Monitoring()
|
||
} else {
|
||
this.$message({
|
||
message: '上传失败!',
|
||
type: 'error'
|
||
})
|
||
}
|
||
})
|
||
.catch(response => {
|
||
// console.log(response);
|
||
})
|
||
},
|
||
// 下载报告
|
||
download(row, type) {
|
||
reportDownload({
|
||
id: row.id,
|
||
type: type
|
||
}).then(res => {
|
||
let blob = new Blob([res], {
|
||
type: 'application/vnd.openxmlformats-officedocument.wordprocessingml.document;charset=UTF-8'
|
||
})
|
||
|
||
const url = window.URL.createObjectURL(blob)
|
||
const link = document.createElement('a') // 创建a标签
|
||
link.href = url
|
||
link.download = type == 1 ? row.inspectionName : row.originalName // 设置下载的文件名
|
||
document.body.appendChild(link)
|
||
link.click() //执行下载
|
||
document.bodyNaNpxoveChild(link)
|
||
})
|
||
}
|
||
}
|
||
}
|
||
</script>
|
||
<style lang="less" scoped>
|
||
@import url('../../../../styles/comStyle.less');
|
||
::v-deep .vxe-table .cell {
|
||
text-align: center;
|
||
}
|
||
::v-deep .el-tabs--border-card > .el-tabs__content {
|
||
padding: 0;
|
||
}
|
||
|
||
.pms {
|
||
margin-left: 10px;
|
||
}
|
||
.obtain {
|
||
margin-left: 1220px;
|
||
}
|
||
</style>
|