| | |
| | | <el-input v-model="listQuery.filter.equipmentName"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="4" style="text-align: center"> |
| | | <el-col :span="8" style="text-align: center"> |
| | | <el-button type="primary" icon="el-icon-search" @click="find()" class="btns" |
| | | >搜索</el-button |
| | | > |
| | |
| | | @click="handleClick('', '新增')" |
| | | >新增</el-button |
| | | > |
| | | <el-button |
| | | type="primary" |
| | | icon="el-icon-plus" |
| | | class="btns" |
| | | @click="importData()" |
| | | >导入</el-button |
| | | > |
| | | |
| | | </el-col> |
| | | </el-row> |
| | | </el-form> |
| | |
| | | import { |
| | | majorEquipmentList, |
| | | majorEquipmentAdd, |
| | | majorEquipmentImport, |
| | | majorEquipmentMod, |
| | | majorEquipmentDel, |
| | | } from "@/api/majorEquipmentData.js"; |
| | | import { majorEquipmentErt } from "@/api/majorEquipment.js"; |
| | | import XLSX from 'xlsx' |
| | | export default { |
| | | data() { |
| | | return { |
| | |
| | | }, |
| | | 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); |
| | | console.log(res); |
| | | if (res.data.code == 200) { |
| | | this.list = res.data.result.records; |
| | | this.recordTotal = res.data.result.total |
| | |
| | | this.$nextTick(() => { |
| | | this.$refs["form"].clearValidate(); |
| | | }); |
| | | majorEquipmentErt().then(res=>{ |
| | | console.log(res) |
| | | this.equipmentName=res.data.result |
| | | }) |
| | | if (type == "新增") { |
| | | this.title = "新增"; |
| | | this.form = { |