对比新文件 |
| | |
| | | <template> |
| | | <div class="app-container"> |
| | | <el-form ref="form" :model="form" label-width="80px"> |
| | | <el-row> |
| | | <el-col :span="5"> |
| | | <el-form-item label="设备名称"> |
| | | <el-input v-model="listQuery.filter.equipmentName"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="8" style="text-align: center"> |
| | | <el-button type="primary" icon="el-icon-search" @click="find()" class="btns" |
| | | >搜索</el-button |
| | | > |
| | | <el-button |
| | | type="primary" |
| | | icon="el-icon-plus" |
| | | class="btns" |
| | | @click="handleClick('', '新增')" |
| | | >新增</el-button |
| | | > |
| | | <el-button |
| | | type="primary" |
| | | icon="el-icon-plus" |
| | | class="btns" |
| | | @click="importData()" |
| | | >导入</el-button |
| | | > |
| | | |
| | | </el-col> |
| | | </el-row> |
| | | </el-form> |
| | | <el-table :data="list" border style="width: 100%"> |
| | | <el-table-column label="设备编号" align="center" prop="equipmentSerialNumber"> |
| | | </el-table-column> |
| | | <el-table-column prop="equipmentName" label="设备名称" align="center"> |
| | | </el-table-column> |
| | | <el-table-column prop="rangeLowerLimit" label="仪表量程下限" align="center"> |
| | | </el-table-column> |
| | | <el-table-column prop="rangeUpperLimit" label="仪表量程上限" align="center"> |
| | | </el-table-column> |
| | | <el-table-column prop="highHighLiquidAlarm" label="高高液位报警值" align="center"> |
| | | </el-table-column> |
| | | <el-table-column prop="highLiquidAlarm" label="高液位报警值" align="center"> |
| | | </el-table-column> |
| | | <el-table-column prop="lowLiquidAlarm" label="低液位报警值" align="center"> |
| | | </el-table-column> |
| | | <el-table-column prop="lowLowLiquidAlarm" label="低低液位报警值" align="center"> |
| | | </el-table-column> |
| | | <el-table-column align="center" label="操作"> |
| | | <template slot-scope="scope"> |
| | | <el-button |
| | | @click="handleClick(scope.row, '编辑')" |
| | | type="text" |
| | | size="small" |
| | | >编辑</el-button |
| | | > |
| | | <el-button |
| | | type="text" |
| | | size="small" |
| | | @click="deleteById(scope.row.id)" |
| | | style="color: red" |
| | | >删除</el-button |
| | | > |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | | <div style="text-align:right"> |
| | | <el-pagination |
| | | v-show="recordTotal>0" |
| | | @size-change="handleSizeChange" |
| | | @current-change="handleCurrentChange" |
| | | :current-page="currentPage" |
| | | :page-sizes="[10, 20, 30, 50]" |
| | | :page-size="pageSize" |
| | | layout="total, sizes, prev, pager, next, jumper" |
| | | :total="recordTotal" |
| | | > |
| | | </el-pagination> |
| | | </div> |
| | | <el-dialog |
| | | :title="title" |
| | | :visible.sync="dialogVisible" |
| | | width="40%" |
| | | > |
| | | <el-form ref="form" :rules="rules" :model="form" label-width="120px"> |
| | | <el-row> |
| | | <el-col :span="12"> |
| | | <el-form-item label="设备名称" prop="equipmentId"> |
| | | <el-select |
| | | v-model="form.equipmentId" |
| | | placeholder="请选择设备名称" |
| | | style="width: 100%" |
| | | > |
| | | <el-option |
| | | v-for="item in equipmentName" |
| | | :key="item.value" |
| | | :label="item.name" |
| | | :value="item.id" |
| | | > |
| | | </el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="检测时间" prop="monitoringTime"> |
| | | <el-date-picker |
| | | v-model="form.monitoringTime" |
| | | value-format="yyyy-MM-dd" |
| | | placeholder="选择日期时间" |
| | | style="width: 100%;"> |
| | | </el-date-picker> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | <el-row> |
| | | <el-col :span="12"> |
| | | <el-form-item label="仪表量程下限" prop="rangeLowerLimit"> |
| | | <el-input v-model.number="form.rangeLowerLimit" maxlength="50"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="仪表量程上限" prop="rangeLowerLimit"> |
| | | <el-input v-model.number="form.rangeUpperLimit" maxlength="50"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | <el-row> |
| | | <el-col :span="12"> |
| | | <el-form-item label="高高液位报警值" prop="rangeUpperLimit"> |
| | | <el-input v-model.number="form.highHighLiquidAlarm" maxlength="50"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="高液位报警值" prop="alarmInfo"> |
| | | <el-input v-model.number="form.highLiquidAlarm" maxlength="50"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | <el-row> |
| | | <el-col :span="12"> |
| | | <el-form-item label="低液位报警值" prop="alarmInfo"> |
| | | <el-input v-model.number="form.lowLiquidAlarm" maxlength="50"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="低低液位报警值" prop="alarmInfo"> |
| | | <el-input v-model.number="form.lowLowLiquidAlarm" maxlength="50"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | </el-form> |
| | | <span slot="footer" class="dialog-footer"> |
| | | <el-button type="primary" class="btns" @click="AddelementManagement()" |
| | | >确 定</el-button |
| | | > |
| | | <el-button @click="dialogVisible = false">取 消</el-button> |
| | | </span> |
| | | </el-dialog> |
| | | </div> |
| | | </template> |
| | | <script> |
| | | import { |
| | | majorEquipmentList, |
| | | majorEquipmentAdd, |
| | | majorEquipmentImport, |
| | | majorEquipmentMod, |
| | | majorEquipmentDel, |
| | | } from "@/api/majorEquipmentData.js"; |
| | | import { majorEquipmentErt } from "@/api/majorEquipment.js"; |
| | | import XLSX from 'xlsx' |
| | | export default { |
| | | data() { |
| | | return { |
| | | dialogVisible: false, |
| | | title: "", |
| | | form: { |
| | | equipmentId: "", |
| | | monitoringTime:"", |
| | | rangeLowerLimit: "", |
| | | rangeUpperLimit: "", |
| | | highHighLiquidAlarm:"", |
| | | highLiquidAlarm:"", |
| | | lowLiquidAlarm:"", |
| | | lowLowLiquidAlarm:"", |
| | | }, |
| | | alarmTime:"", |
| | | pageSize: 10, |
| | | recordTotal: 0, |
| | | currentPage: 1, |
| | | list: [], |
| | | listQuery: { |
| | | filter: { |
| | | equipmentId: "", |
| | | status:'', |
| | | }, |
| | | pageIndex: 1, |
| | | pageSize: 10, |
| | | }, |
| | | // type:'', |
| | | rules: { |
| | | rangeLowerLimit:{ type: 'number', message: '仪表量程下限必须为数字值'}, |
| | | rangeUpperLimit:{ type: 'number', message: '仪表量程上限必须为数字值'}, |
| | | highHighLiquidAlarm:{ type: 'number', message: '高高液位报警值必须为数字值'}, |
| | | highLiquidAlarm:{ type: 'number', message: '高液位报警值必须为数字值'}, |
| | | lowLiquidAlarm:{ type: 'number', message: '低液位报警值必须为数字值'}, |
| | | lowLowLiquidAlarm:{ type: 'number', message: '低低液位报警值必须为数字值'}, |
| | | }, |
| | | equipmentName:[], |
| | | unitIdOptions:[{label:"已处理",value:0},{label:"未处理",value:1}] |
| | | }; |
| | | }, |
| | | created() { |
| | | this.elementManagementL(); |
| | | this.initMajorEquipment() |
| | | }, |
| | | methods: { |
| | | |
| | | importData(){ |
| | | let input = document.createElement('input'); input.type = 'file'; |
| | | input.addEventListener('change', (event) => { |
| | | this.exportData(event) |
| | | }) |
| | | input.click() |
| | | }, |
| | | exportData (event) { |
| | | this.ishowFile = true // 销毁 |
| | | if (!event.currentTarget.files.length) { |
| | | return |
| | | } |
| | | const that = this |
| | | // 拿取文件对象 |
| | | var f = event.currentTarget.files[0] |
| | | // 用FileReader来读取 |
| | | var reader = new FileReader() |
| | | // 重写FileReader上的readAsBinaryString方法 |
| | | FileReader.prototype.readAsBinaryString = function (f) { |
| | | var binary = '' |
| | | var wb // 读取完成的数据 |
| | | var outdata // 你需要的数据 |
| | | var reader = new FileReader() |
| | | reader.onload = function (e) { |
| | | // 读取成Uint8Array,再转换为Unicode编码(Unicode占两个字节) |
| | | var bytes = new Uint8Array(reader.result) |
| | | var length = bytes.byteLength |
| | | for (var i = 0; i < length; i++) { |
| | | binary += String.fromCharCode(bytes[i]) |
| | | } |
| | | // 接下来就是xlsx了,具体可看api |
| | | wb = XLSX.read(binary, { |
| | | type: 'binary' |
| | | }) |
| | | outdata = XLSX.utils.sheet_to_json(wb.Sheets[wb.SheetNames[0]]) |
| | | // 自定义方法向父组件传递数据 |
| | | var list=JSON.parse(JSON.stringify(outdata)) //读取的数据 |
| | | var arr=[] //传到后台的数据 |
| | | |
| | | |
| | | if(list!=null && list.length>0){ |
| | | for(var i=0;i<list.length;i++){ |
| | | var obj=new Object() |
| | | obj.index=list[i].序号 |
| | | obj.equipmentName=list[i].设备名称?list[i].设备名称:"" |
| | | obj.equipmentSerialNumber=list[i].设备编号?list[i].设备编号:"" |
| | | obj.monitoringTime=list[i].监测时间?list[i].监测时间:"" |
| | | if(list[i].仪表量程下限!=null && list[i].仪表量程下限!="" && isNaN(list[i].仪表量程下限)){ |
| | | that.$message("序号为"+(i+1)+"的仪表量程下限不是数字","warning") |
| | | return |
| | | } |
| | | if(list[i].仪表量程上限!=null && list[i].仪表量程上限!="" && isNaN(list[i].仪表量程上限)){ |
| | | that.$message("序号为"+(i+1)+"的仪表量程上限不是数字","warning") |
| | | return |
| | | } |
| | | if(list[i].高高液位报警值!=null && list[i].高高液位报警值!="" && isNaN(list[i].高高液位报警值)){ |
| | | that.$message("序号为"+(i+1)+"的高高液位报警值不是数字","warning") |
| | | return |
| | | } |
| | | if(list[i].高液位报警值!=null && list[i].高液位报警值!="" && isNaN(list[i].高液位报警值)){ |
| | | that.$message("序号为"+(i+1)+"的高液位报警值不是数字","warning") |
| | | return |
| | | } |
| | | if(list[i].低液位报警值!=null && list[i].低液位报警值!="" && isNaN(list[i].低液位报警值)){ |
| | | that.$message("序号为"+(i+1)+"的低液位报警值不是数字","warning") |
| | | return |
| | | } |
| | | if(list[i].低低液位报警值!=null && list[i].低低液位报警值!="" && isNaN(list[i].低低液位报警值)){ |
| | | that.$message("序号为"+(i+1)+"的低低液位报警值不是数字","warning") |
| | | return |
| | | } |
| | | obj.rangeLowerLimit=list[i].仪表量程下限?list[i].仪表量程下限:"" |
| | | obj.rangeUpperLimit=list[i].仪表量程上限?list[i].仪表量程上限:"" |
| | | obj.highHighLiquidAlarm=list[i].高高液位报警值?list[i].高高液位报警值:"" |
| | | obj.highLiquidAlarm=list[i].高液位报警值?list[i].高液位报警值:"" |
| | | obj.lowLiquidAlarm=list[i].低液位报警值?list[i].低液位报警值:"" |
| | | obj.lowLowLiquidAlarm=list[i].低低液位报警值?list[i].低低液位报警值:"" |
| | | arr.push(obj) |
| | | } |
| | | } |
| | | //判空(名称/编号/时间) |
| | | let nullArr=that.checkNull(arr) |
| | | if(nullArr.nullNameArr.length>0){ |
| | | that.$message("模板中序号为("+nullArr.nullNameArr+")的设备名称不能为空","error") |
| | | return |
| | | } |
| | | if(nullArr.nullNumArr.length>0){ |
| | | that.$message("模板中序号为("+nullArr.nullNumArr+")的设备编号不能为空","error") |
| | | return |
| | | } |
| | | if(nullArr.nullTimeArr.length>0){ |
| | | that.$message("模板中序号为("+nullArr.nullTimeArr+")的监测时间不能为空","error") |
| | | return |
| | | } |
| | | //判断设备编号对应的设备是否存在,如果都存在的了则设置设备id |
| | | let res=that.checkExist(arr) |
| | | if(res.nullArr.length>0){ |
| | | that.$message("模板中序号为("+res.nullArr+")的设备编号没有对应的设备!","error") |
| | | return |
| | | } |
| | | that.insertData(res.resArr) |
| | | } |
| | | reader.readAsArrayBuffer(f) |
| | | } |
| | | reader.readAsBinaryString(f) |
| | | }, |
| | | |
| | | insertData(data){ |
| | | majorEquipmentImport(data).then(res=>{ |
| | | if (res.data.code == 200) { |
| | | this.$message({ |
| | | type:'success', |
| | | message:'导入成功', |
| | | duration:2000, |
| | | }) |
| | | |
| | | }else{ |
| | | this.$message.error('导入失败,系统未知错误!'); |
| | | } |
| | | }) |
| | | }, |
| | | |
| | | |
| | | checkExist(excelArr){ |
| | | let res={ |
| | | nullArr:[], |
| | | resArr:[], |
| | | } |
| | | |
| | | let NumArr=[] |
| | | let IdArr=[] |
| | | for (let i = 0 ; i < this.equipmentName.length ; i++){ |
| | | NumArr.push(this.equipmentName[i].serialNumber) |
| | | IdArr.push(this.equipmentName[i].id) |
| | | } |
| | | for (let j = 0 ; j < excelArr.length ; j++){ |
| | | if (NumArr.indexOf(excelArr[j].equipmentSerialNumber)==-1) { |
| | | res.nullArr.push(excelArr[j].index) |
| | | }else{ |
| | | let index = NumArr.indexOf(excelArr[j].equipmentSerialNumber) |
| | | excelArr[j].equipmentId=IdArr[index] |
| | | } |
| | | } |
| | | res.resArr=excelArr |
| | | return res; |
| | | }, |
| | | |
| | | checkNull(excelArr){ |
| | | let nullArr={ |
| | | nullNameArr:[], |
| | | nullNumArr:[], |
| | | nullTimeArr:[], |
| | | } |
| | | if(excelArr!=null && excelArr.length>0){ |
| | | for (let j=0;j<excelArr.length;j++){ |
| | | if (excelArr[j].equipmentName==null || excelArr[j].equipmentName=='') { |
| | | nullArr.nullNameArr.push(excelArr[j].index) |
| | | } |
| | | if (excelArr[j].equipmentSerialNumber==null || excelArr[j].equipmentSerialNumber=='') { |
| | | nullArr.nullNumArr.push(excelArr[j].index) |
| | | } |
| | | if (excelArr[j].monitoringTime==null || excelArr[j].monitoringTime=='') { |
| | | nullArr.nullTimeArr.push(excelArr[j].index) |
| | | } |
| | | } |
| | | } |
| | | return nullArr |
| | | }, |
| | | |
| | | initMajorEquipment(){ |
| | | majorEquipmentErt().then(res=>{ |
| | | if (res.data.code == 200) { |
| | | this.equipmentName=res.data.result |
| | | } |
| | | }) |
| | | }, |
| | | |
| | | async elementManagementL() { |
| | | var res = await majorEquipmentList(this.listQuery); |
| | | if (res.data.code == 200) { |
| | | this.list = res.data.result.records; |
| | | this.recordTotal = res.data.result.total |
| | | this.pageSize=res.data.result.size; |
| | | this.currentPage = res.data.result.current |
| | | } |
| | | }, |
| | | handleClick(value, type) { |
| | | this.dialogVisible = true; |
| | | this.$nextTick(() => { |
| | | this.$refs["form"].clearValidate(); |
| | | }); |
| | | if (type == "新增") { |
| | | this.title = "新增"; |
| | | this.form = { |
| | | equipmentId: "", |
| | | monitoringTime:"", |
| | | rangeLowerLimit: "", |
| | | rangeUpperLimit: "", |
| | | highHighLiquidAlarm:"", |
| | | highLiquidAlarm:"", |
| | | lowLiquidAlarm:"", |
| | | lowLowLiquidAlarm:"", |
| | | }; |
| | | } else { |
| | | this.title = "编辑"; |
| | | this.form = value; |
| | | } |
| | | }, |
| | | AddelementManagement() { |
| | | this.$refs["form"].validate((valid) => { |
| | | if (valid) { |
| | | if (this.title == "新增") { |
| | | majorEquipmentAdd(this.form).then((res) => { |
| | | if (res.data.code == 200) { |
| | | this.dialogVisible = false; |
| | | this.elementManagementL(); |
| | | this.$notify({ |
| | | type: "success", |
| | | duration: 2000, |
| | | message: "新增成功", |
| | | title: "成功", |
| | | }); |
| | | } else { |
| | | this.$message({ |
| | | type: "warning", |
| | | message: res.data.message, |
| | | }); |
| | | } |
| | | }); |
| | | } else { |
| | | majorEquipmentMod(this.form).then((res) => { |
| | | if (res.data.code == 200) { |
| | | this.dialogVisible = false; |
| | | this.elementManagementL(); |
| | | this.$notify({ |
| | | type: "success", |
| | | duration: 2000, |
| | | message: "编辑成功", |
| | | title: "成功", |
| | | }); |
| | | } else { |
| | | his.$message({ |
| | | type: "warning", |
| | | message: res.data.message, |
| | | }); |
| | | } |
| | | }); |
| | | } |
| | | } |
| | | }); |
| | | }, |
| | | deleteById(val) { |
| | | majorEquipmentDel({id:val}).then((res) => { |
| | | if (res.data.code == 200) { |
| | | this.elementManagementL(); |
| | | this.$notify({ |
| | | title: "成功", |
| | | message: "删除成功", |
| | | type: "success", |
| | | duration: 2000, |
| | | }); |
| | | } |
| | | }); |
| | | }, |
| | | find(){ |
| | | this.elementManagementL(); |
| | | }, |
| | | handleSizeChange(val){ |
| | | this.listQuery.pageSize = val |
| | | this.elementManagementL(); |
| | | }, |
| | | handleCurrentChange(val){ |
| | | this.listQuery.pageIndex = val |
| | | this.elementManagementL(); |
| | | }, |
| | | |
| | | }, |
| | | }; |
| | | </script> |
| | | <style scoped> |
| | | .btns { |
| | | background-color: #034ea2; |
| | | border: 1px solid #034ea2; |
| | | } |
| | | </style> |