| | |
| | | <el-row> |
| | | <el-col :span="5"> |
| | | <el-form-item label="设备名称"> |
| | | <el-input v-model="listQuery.filter.equipmentName"></el-input> |
| | | <el-input v-model="listQuery.filter.equipmentName" clearable></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="4" 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-col :span="10" 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-refresh" @click="reset()" 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-button type="primary" class="btns" @click="exportTemplate()">下载导入模板</el-button> |
| | | </el-col> |
| | | </el-row> |
| | | </el-form> |
| | |
| | | <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 prop="monitoringTime" label="检测时间" align="center"> |
| | | </el-table-column> |
| | | <el-table-column align="center" label="操作"> |
| | | <template slot-scope="scope"> |
| | |
| | | :page-size="pageSize" |
| | | layout="total, sizes, prev, pager, next, jumper" |
| | | :total="recordTotal" |
| | | style="margin-top: 20px;" |
| | | > |
| | | </el-pagination> |
| | | </div> |
| | |
| | | <el-col :span="12"> |
| | | <el-form-item label="检测时间" prop="monitoringTime"> |
| | | <el-date-picker |
| | | type="datetime" |
| | | v-model="form.monitoringTime" |
| | | value-format="yyyy-MM-dd" |
| | | value-format="yyyy-MM-dd HH:mm:ss" |
| | | placeholder="选择日期时间" |
| | | style="width: 100%;"> |
| | | </el-date-picker> |
| | |
| | | <el-row> |
| | | <el-col :span="12"> |
| | | <el-form-item label="仪表量程下限" prop="rangeLowerLimit"> |
| | | <el-input v-model.number="form.rangeLowerLimit" maxlength="50"></el-input> |
| | | <el-input v-model="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 label="仪表量程上限" prop="rangeUpperLimit"> |
| | | <el-input v-model="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 label="高高液位报警值" prop="highHighLiquidAlarm"> |
| | | <el-input v-model="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 label="高液位报警值" prop="highLiquidAlarm"> |
| | | <el-input v-model="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 label="低液位报警值" prop="lowLiquidAlarm"> |
| | | <el-input v-model="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 label="低低液位报警值" prop="lowLowLiquidAlarm"> |
| | | <el-input v-model="form.lowLowLiquidAlarm" maxlength="50"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | |
| | | <el-button type="primary" class="btns" @click="AddelementManagement()" |
| | | >确 定</el-button |
| | | > |
| | | <el-button @click="dialogVisible = false">取 消</el-button> |
| | | <el-button @click="cancel()">取 消</el-button> |
| | | </span> |
| | | </el-dialog> |
| | | </div> |
| | |
| | | import { |
| | | majorEquipmentList, |
| | | majorEquipmentAdd, |
| | | majorEquipmentImport, |
| | | majorEquipmentMod, |
| | | majorEquipmentDel, |
| | | } from "@/api/majorEquipmentData.js"; |
| | | import { majorEquipmentErt } from "@/api/majorEquipment.js"; |
| | | import XLSX from 'xlsx' |
| | | const exampleFile = require('@/assets/example/instrumentData.xlsx') |
| | | export default { |
| | | data() { |
| | | return { |
| | |
| | | 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: '低低液位报警值必须为数字值'}, |
| | | equipmentId: |
| | | { required: true, message: "请选择设备名称", trigger: "change" }, |
| | | monitoringTime: |
| | | { required: true, message: "请选择检测时间", trigger: "change"}, |
| | | rangeLowerLimit:[ |
| | | { required: true, message: "仪表量程下限不能为空", trigger: "change"}, |
| | | { pattern: /(^[1-9]([0-9]+)?(\.[0-9]{1,2})?$)|(^(0){1}$)|(^[0-9]\.[0-9]([0-9])?$)/, message: '请输入数字格式,可保留两位小数' } |
| | | ], |
| | | rangeUpperLimit:[ |
| | | { required: true, message: "仪表量程上限不能为空", trigger: "change"}, |
| | | { pattern: /(^[1-9]([0-9]+)?(\.[0-9]{1,2})?$)|(^(0){1}$)|(^[0-9]\.[0-9]([0-9])?$)/, message: '请输入数字格式,可保留两位小数' } |
| | | ], |
| | | highHighLiquidAlarm:[ |
| | | { required: true, message: "高高液位报警值不能为空", trigger: "change"}, |
| | | { pattern: /(^[1-9]([0-9]+)?(\.[0-9]{1,2})?$)|(^(0){1}$)|(^[0-9]\.[0-9]([0-9])?$)/, message: '请输入数字格式,可保留两位小数' } |
| | | ], |
| | | highLiquidAlarm:[ |
| | | { required: true, message: "高液位报警值不能为空", trigger: "change"}, |
| | | { pattern: /(^[1-9]([0-9]+)?(\.[0-9]{1,2})?$)|(^(0){1}$)|(^[0-9]\.[0-9]([0-9])?$)/, message: '请输入数字格式,可保留两位小数' } |
| | | ], |
| | | lowLiquidAlarm:[ |
| | | { required: true, message: "低液位报警值不能为空", trigger: "change"}, |
| | | { pattern: /(^[1-9]([0-9]+)?(\.[0-9]{1,2})?$)|(^(0){1}$)|(^[0-9]\.[0-9]([0-9])?$)/, message: '请输入数字格式,可保留两位小数' } |
| | | ], |
| | | lowLowLiquidAlarm:[ |
| | | { required: true, message: "低低液位报警值不能为空", trigger: "change"}, |
| | | { pattern: /(^[1-9]([0-9]+)?(\.[0-9]{1,2})?$)|(^(0){1}$)|(^[0-9]\.[0-9]([0-9])?$)/, message: '请输入数字格式,可保留两位小数' } |
| | | ], |
| | | }, |
| | | equipmentName:[], |
| | | unitIdOptions:[{label:"已处理",value:0},{label:"未处理",value:1}] |
| | |
| | | }, |
| | | created() { |
| | | this.elementManagementL(); |
| | | this.initMajorEquipment() |
| | | }, |
| | | methods: { |
| | | exportTemplate(){ |
| | | window.open(exampleFile, '_blank') |
| | | }, |
| | | |
| | | 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 = { |
| | |
| | | } else { |
| | | this.title = "编辑"; |
| | | this.form = value; |
| | | console.log(123,this.form) |
| | | console.log(222,this.equipmentName) |
| | | } |
| | | }, |
| | | AddelementManagement() { |
| | |
| | | title: "成功", |
| | | }); |
| | | } else { |
| | | this.$message({ |
| | | type: "warning", |
| | | message: res.data.message, |
| | | }); |
| | | } |
| | | }); |
| | | } else { |
| | |
| | | title: "成功", |
| | | }); |
| | | } else { |
| | | his.$message({ |
| | | type: "warning", |
| | | message: res.data.message, |
| | | }); |
| | | } |
| | | }); |
| | | } |
| | | } |
| | | }); |
| | | }, |
| | | cancel(){ |
| | | this.elementManagementL(); |
| | | this.dialogVisible = false |
| | | }, |
| | | deleteById(val) { |
| | | majorEquipmentDel({id:val}).then((res) => { |
| | | if (res.data.code == 200) { |
| | | this.elementManagementL(); |
| | | this.$notify({ |
| | | title: "成功", |
| | | message: "删除成功", |
| | | type: "success", |
| | | duration: 2000, |
| | | }); |
| | | } |
| | | }); |
| | | this.$confirm('确认删除吗','提示', { |
| | | confirmButtonText: '确认', |
| | | cancelButtonText: '取消', |
| | | type: 'warning' |
| | | }) |
| | | .then(()=>{ |
| | | majorEquipmentDel({id:val}).then((res) => { |
| | | if (res.data.code == 200) { |
| | | this.elementManagementL(); |
| | | this.$notify({ |
| | | title: "成功", |
| | | message: "删除成功", |
| | | type: "success", |
| | | duration: 2000, |
| | | }); |
| | | } |
| | | }); |
| | | }) |
| | | .catch(error =>{ |
| | | }); |
| | | }, |
| | | find(){ |
| | | this.elementManagementL(); |
| | | }, |
| | | reset(){ |
| | | this.listQuery.filter.equipmentName = ""; |
| | | this.elementManagementL(); |
| | | }, |
| | | handleSizeChange(val){ |
| | | this.listQuery.pageSize = val |
| | | this.elementManagementL(); |