This commit is contained in:
GGJ
2025-01-09 19:02:44 +08:00
commit 92e7a7a5eb
2943 changed files with 1152283 additions and 0 deletions

View File

@@ -0,0 +1,417 @@
<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>