Commit 5c3d3690 authored by caicaicai's avatar caicaicai

修改

parent ead6a0f9
......@@ -7,10 +7,11 @@ var HttpReq = function(){
//卡车调度系统
truckDispatching:{
//系统管理——班次设置
shiftQuery: function(){
shiftQuery: function(param){
return request({
url: '/api/Class',
method: 'get',
params:param,
})
},
shiftAdd: function(data){
......@@ -37,10 +38,11 @@ var HttpReq = function(){
})
},
//系统管理——数据字典——报警时长
alarmTimeQuery: function(){
alarmTimeQuery: function(param){
return request({
url: '/api/AlarmTime',
method: 'get',
params:param,
})
},
alarmTimeAdd: function(data){
......@@ -67,10 +69,11 @@ var HttpReq = function(){
})
},
//系统管理——数据字典——疲劳驾驶
fdriTimeQuery: function(){
fdriTimeQuery: function(param){
return request({
url: '/api/FdriTime',
method: 'get',
params:param,
})
},
fdriTimeAdd: function(data){
......@@ -97,10 +100,11 @@ var HttpReq = function(){
})
},
//系统管理——数据字典——优先级设置
getPriorityQuery: function(){
getPriorityQuery: function(param){
return request({
url: '/api/Pri',
method: 'get',
params:param,
})
},
getPriorityTimeAdd: function(data){
......@@ -126,6 +130,221 @@ var HttpReq = function(){
data:data,
})
},
//车辆管理——车辆类型
carTypeQuery: function(param){
return request({
url: '/api/CarClass',
method: 'get',
params:param,
})
},
carTypeAdd: function(data){
return request({
url: '/api/CarClass',
method: 'POST',
data:data,
}).then((res) => {
return res
})
},
carTypeUpdate: function(data){
return request({
url: '/api/CarClass',
method: 'PUT',
data:data,
})
},
carTypeDel: function(data){
return request({
url: '/api/CarClass',
method: 'Delete',
data:data,
})
},
//车辆管理——车辆型号
carModelQuery: function(param){
return request({
url: '/api/CarModel',
method: 'get',
params:param,
})
},
carModelAdd: function(data){
return request({
url: '/api/CarModel',
method: 'POST',
data:data,
}).then((res) => {
return res
})
},
carModelUpdate: function(data){
return request({
url: '/api/CarModel',
method: 'PUT',
data:data,
})
},
carModelDel: function(data){
return request({
url: '/api/CarModel',
method: 'Delete',
data:data,
})
},
//车辆管理——车队管理
carFleetQuery: function(param){
return request({
url: '/api/CarRoad',
method: 'get',
params:param,
})
},
carFleetAdd: function(data){
return request({
url: '/api/CarRoad',
method: 'POST',
data:data,
}).then((res) => {
return res
})
},
carFleetUpdate: function(data){
return request({
url: '/api/CarRoad',
method: 'PUT',
data:data,
})
},
carFleetDel: function(data){
return request({
url: '/api/CarRoad',
method: 'Delete',
data:data,
})
},
//车辆管理——车辆信息
carInformationQuery: function(param){
return request({
url: '/api/Car',
method: 'get',
params:param,
})
},
carInformationAdd: function(data){
return request({
url: '/api/Car',
method: 'POST',
data:data,
}).then((res) => {
return res
})
},
carInformationUpdate: function(data){
return request({
url: '/api/Car',
method: 'PUT',
data:data,
})
},
carInformationDel: function(data){
return request({
url: '/api/Car',
method: 'Delete',
data:data,
})
},
//车辆管理——车辆故障管理
carFaultQuery: function(param){
return request({
url: '/api/CarBreak',
method: 'get',
params:param,
})
},
carFaultAdd: function(data){
return request({
url: '/api/CarBreak',
method: 'POST',
data:data,
}).then((res) => {
return res
})
},
carFaultUpdate: function(data){
return request({
url: '/api/CarBreak',
method: 'PUT',
data:data,
})
},
carFaultDel: function(data){
return request({
url: '/api/CarBreak',
method: 'Delete',
data:data,
})
},
//车辆管理——车辆维修管理
carRepairQuery: function(param){
return request({
url: '/api/CarRepair',
method: 'get',
params:param,
})
},
carRepairAdd: function(data){
return request({
url: '/api/CarRepair',
method: 'POST',
data:data,
}).then((res) => {
return res
})
},
carRepairUpdate: function(data){
return request({
url: '/api/CarRepair',
method: 'PUT',
data:data,
})
},
carRepairDel: function(data){
return request({
url: '/api/CarRepair',
method: 'Delete',
data:data,
})
},
......
<template>
<div class="common-page device-manage">
<div class="option page-row">
<!--工具栏-->
<div class="head-container">
<!-- 搜索 -->
<label class="el-form-item-label" style="font-weight: 500;">设备识别码</label>
<el-input v-model="query.code" clearable size="small" placeholder="请输入设备识别码" style="width:180px;" @clear="clearLimit"/>
<el-button size="mini" type="success" icon="el-icon-search" @click="toSearch">搜索</el-button>
</div>
</div>
<!-- 表格 -->
<div class="panel-bottom page-row">
<h3>设备管理列表</h3>
<h3>车辆故障管理</h3>
<div class="ctin-box">
<div class="content-within">
<div class="content-fix">
......@@ -19,30 +12,17 @@
</div>
<div class="content">
<el-table :data="tableData" v-loading="loading" border style="width:auto" :row-class-name="tableRowClassName">
<el-table-column prop="id" label="设备ID" align="center"></el-table-column>
<el-table-column prop="code" label="设备识别码" align="center"></el-table-column>
<el-table-column prop="name" label="设备名称" align="center"></el-table-column>
<el-table-column prop="alarmWindspeed" label="风速报警阈值" align="center"></el-table-column>
<el-table-column prop="alarmTemperature" label="温度报警阈值" align="center"></el-table-column>
<el-table-column prop="alarmHumidity" label="湿度报警阈值" align="center"></el-table-column>
<el-table-column prop="alarmCo2" label="二氧化碳报警阈值" align="center"></el-table-column>
<el-table-column prop="alarmMlux" label="光照报警阈值" align="center"></el-table-column>
<el-table-column prop="alarmPh" label="酸碱度报警阈值" align="center"></el-table-column>
<el-table-column prop="alarmWaterTemperature" label="水温报警阈值" align="center"></el-table-column>
<el-table-column prop="alarmElectricalConductance" label="电导率报警阈值" align="center"></el-table-column>
<el-table-column prop="alarmWaterDepth" label="液位报警阈值" align="center"></el-table-column>
<el-table-column prop="createTime" label="设备激活时间" align="center"></el-table-column>
<el-table-column prop="addTime" label="最后采集时间" align="center"></el-table-column>
<el-table-column prop="projectId" label="所属项目" align="center" :formatter="formatter"></el-table-column>
<el-table-column label="操作" min-width="180px" align="center" fixed="right">
<el-table-column prop="id" label="序号" align="center"></el-table-column>
<el-table-column prop="name" label="编码" align="center"></el-table-column>
<el-table-column prop="number" label="车辆名称" align="center"></el-table-column>
<el-table-column prop="driver" label="司机" align="center"></el-table-column>
<el-table-column prop="carbreak" label="故障类型" align="center"></el-table-column>
<el-table-column prop="createTime" label="日期" align="center"></el-table-column>
<el-table-column prop="status" label="车辆状态处理" align="center" :formatter="statusChange"></el-table-column>
<el-table-column label="操作" align="center" fixed="right">
<template slot-scope="scope">
<el-button size="mini" type="success" icon="el-icon-view" @click="toSeeMore(scope.row)"></el-button>
<el-button size="mini" type="primary" icon="el-icon-edit" @click="toEdit(scope.row)"></el-button>
<el-button size="mini" type="danger" icon="el-icon-delete" @click="toDelete(scope.row)"></el-button>
<!-- <div class="btn-groub2">
<el-button size="mini" type="warning" icon="el-icon-set-up" @click="toInstructionSet(scope.row)"></el-button>
<el-button size="mini" type="info" icon="el-icon-tickets" @click="toInstructionLog(scope.row)"></el-button>
</div> -->
<el-button size="mini" type="primary" @click="toEdit(scope.row)">处理故障</el-button>
<!-- <el-button size="mini" type="danger" icon="el-icon-delete" @click="toDelete(scope.row)"></el-button> -->
</template>
</el-table-column>
</el-table>
......@@ -57,56 +37,24 @@
<!-- 表单渲染 -->
<el-dialog append-to-body :close-on-click-modal="true" :before-close="cancelForm" :visible.sync="form.visible" :title="form.title" width="700px">
<el-form :model="form.item" :rules="rules" ref="form1" :inline="true" size="small" label-width="150px">
<el-form-item label="选择项目" prop="projectId" >
<el-select v-model="form.item.projectId" placeholder="请选择项目" size="small">
<el-option v-for="(obj,index) in form.selectList" :label="obj.name" :value="obj.id" :key="index"></el-option>
</el-select>
</el-form-item>
<!-- <el-form-item label="设备ID" prop="id">
<el-input v-model="form.item.id" style="width:280px;" placeholder="请输入设备编号" :disabled="form.reqType==='edit'"/>
</el-form-item> -->
<el-form-item label="设备识别码" prop="code">
<el-input v-model="form.item.code" style="width:260px;" placeholder="请输入设备识别码" :disabled="form.reqType==='edit'"/>
</el-form-item>
<el-form-item label="设备名称" prop="name">
<el-input v-model="form.item.name" style="width:260px;" placeholder="请输入设备名称"/>
</el-form-item>
<el-form-item label="风速报警阈值" prop="alarmWindspeed" >
<el-input v-model="form.item.alarmWindspeed" style="width:160px;" placeholder="请输入风速报警阈值"/>
</el-form-item>
<el-form-item label="温度报警阈值" prop="alarmTemperature" >
<el-input v-model="form.item.alarmTemperature" style="width:160px;" placeholder="请输入温度报警阈值"/>
</el-form-item>
<el-form-item label="湿度报警阈值" prop="alarmHumidity" >
<el-input v-model="form.item.alarmHumidity" style="width:160px;" placeholder="请输入湿度报警阈值"/>
</el-form-item>
<el-form-item label="二氧化碳报警阈值" prop="alarmCo2" >
<el-input v-model="form.item.alarmCo2" style="width:160px;" placeholder="请输入二氧化碳报警阈值"/>
</el-form-item>
<el-form-item label="光照报警阈值" prop="alarmMlux" >
<el-input v-model="form.item.alarmMlux" style="width:160px;" placeholder="请输入光照报警阈值"/>
</el-form-item>
<el-form-item label="酸碱度报警阈值" prop="alarmPh" >
<el-input v-model="form.item.alarmPh" style="width:160px;" placeholder="请输入酸碱度报警阈值"/>
<el-form-item label="编码" prop="name" v-show="form.reqType == 'add'">
<el-input v-model="form.item.name" style="width:280px;" placeholder="请输入编码"/>
</el-form-item>
<el-form-item label="水温报警阈值" prop="alarmWaterTemperature" >
<el-input v-model="form.item.alarmWaterTemperature" style="width:160px;" placeholder="请输入水温报警阈值"/>
<el-form-item label="车辆名称" prop="number" v-show="form.reqType == 'add'">
<el-input v-model="form.item.number" style="width:280px;" placeholder="请输入车辆名称"/>
</el-form-item>
<el-form-item label="电导率报警阈值" prop="alarmElectricalConductance" >
<el-input v-model="form.item.alarmElectricalConductance" style="width:160px;" placeholder="请输入电导率报警阈值"/>
<el-form-item label="司机" prop="driver" v-show="form.reqType == 'add'">
<el-input v-model="form.item.driver" style="width:280px;" placeholder="请输入司机"/>
</el-form-item>
<el-form-item label="液位报警阈值" prop="alarmWaterDepth" >
<el-input v-model="form.item.alarmWaterDepth" style="width:160px;" placeholder="请输入液位报警阈值"/>
<el-form-item label="故障类型" prop="carbreak" v-show="form.reqType == 'add'">
<el-input v-model="form.item.carbreak" style="width:280px;" placeholder="请输入故障类型"/>
</el-form-item>
<el-form-item label="上传设备位置" prop="position">
<el-input v-model="picFileName" style="width:160px;" placeholder="请上传设备位置" disabled />
<input type="file" name="image" @change="excelImport($event)" />
</el-form-item>
<div style="margin:0px 0px 10px 55px;font-size:16px;font-weight:bold;">摄像头参数配置</div>
<el-form-item label="摄像头ID" prop="camera">
<el-input v-model="form.item.camera" style="width:160px;" placeholder="请输入摄像头ID"/>
<el-form-item label="车辆状态处理" prop="status" v-show="form.reqType == 'edit'">
<el-select v-model="form.item.status" placeholder="请选择车辆状态处理" style="width:280px;">
<el-option label="正常" value="0"></el-option>
<el-option label="故障" value="1"></el-option>
</el-select>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="text" @click="cancelForm">取消</el-button>
......@@ -114,119 +62,15 @@
</div>
</el-dialog>
<!-- 查看更多 -->
<el-dialog title="查看设备" :visible.sync="form.seeMoreDialog" width="800px">
<el-form :model="seeMoreData" style="margin-top:20px;">
<el-form-item label="摄像头位置图片" label-width="150px">
<el-image :src="seeMoreImgUrl" style="width:300px;"></el-image>
</el-form-item>
<el-form-item label="摄像头图像" label-width="150px">
<div id="video-container" style="width:550px;height:350px"></div>
</el-form-item>
<el-form-item label="摄像头ID" label-width="150px">
<el-input v-model="seeMoreData.camera" style="width:200px"></el-input>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="form.seeMoreDialog = false">关闭</el-button>
</div>
</el-dialog>
<!-- 历史图表 -->
<el-dialog class="ecahrt1-dialog" append-to-body :close-on-click-modal="false" :before-close="cancelForm2" :visible.sync="form.historyDialog">
<el-form :rules="rules" ref="form1" :inline="true" size="small" label-width="80px">
<!-- <el-form-item prop="eprogramid" >
<el-select v-model="form.item2.value" placeholder="请选择月份">
<el-option v-for="obj in form.monthSelectList" :label="obj.name" :value="obj.value"></el-option>
</el-select>
</el-form-item> -->
<el-form-item prop="eprogramid" >
<date-range-picker v-model="query.timeSpace" class="date-item" />
</el-form-item>
<el-form-item >
<el-button type="primary" @click="findHistory">查询</el-button>
</el-form-item>
<el-form-item prop="content" style="display:block;" >
<div class="form-body">
<div id="ecahrtA"></div>
</div>
</el-form-item>
</el-form>
</el-dialog>
<!-- 指令下发 -->
<el-dialog append-to-body :close-on-click-modal="false" :before-close="cancelForm3" :visible.sync="form2.visible" :title="form2.title" width="600px">
<el-form :model="form2.item" :rules="rules" ref="form2" :inline="true" size="small" label-width="100px">
<el-form-item label="设备ID" prop="ecode">
<el-input v-model="form2.item.ecode" style="width:280px;" placeholder="请输入设备编号" :disabled="form2.reqType==='edit'"/>
</el-form-item>
<el-form-item label="设备识别码" prop="subcode">
<el-input v-model="form2.item.subcode" style="width:260px;" placeholder="请输入设备识别码" :disabled="form2.reqType==='edit'"/>
</el-form-item>
<el-form-item label="是否启动校正" prop="ilAdjust" style="width:240px;">
<el-select v-model="form2.item.ilAdjust" placeholder="请选择" size="small" style="width:120px;">
<el-option v-for="obj in form2.adjustList" :label="obj.name" :key="obj.value" :value="obj.value"></el-option>
</el-select>
</el-form-item>
<el-form-item label="是否存储裂缝" prop="ilSave" style="width:240px;">
<el-select v-model="form2.item.ilSave" placeholder="请选择" size="small" style="width:120px;">
<el-option v-for="(obj,index) in form2.saveList" :label="obj.name" :value="obj.value" :key="index"></el-option>
</el-select>
</el-form-item>
<el-form-item label="裂缝阈值" prop="ilThreshed" >
<el-input v-model="form2.item.ilThreshed" style="width:160px;" placeholder="请输入裂缝阈值"/>
<span style="color:#aaa;">1~255</span>
</el-form-item>
<el-form-item label="唤醒周期" prop="timekey" >
<el-select v-model="form2.item.timekey" placeholder="请选择时间" size="small" style="width:120px;">
<el-option v-for="(obj,index) in form2.timeList" :label="obj.name" :value="obj.value" :key="index"></el-option>
</el-select>
<el-input v-model="form2.item.time" style="width:160px;" placeholder="请输入时长"/>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="text" @click="cancelForm3">取消</el-button>
<el-button :loading="form2.status.cu === 2" type="primary" @click="reqSetInstruction('form2', form2.item)">确认</el-button>
</div>
</el-dialog>
<!-- 指令日志 -->
<el-dialog append-to-body :close-on-click-modal="false" :before-close="cancelForm4" :visible.sync="form2.logVisible" :title="form2.title" width="65%">
<div class="content">
<el-table :data="form2.formData" v-loading="loading" border style="width:auto" :row-class-name="tableRowClassName">
<el-table-column prop="subcode" label="设备识别码" min-width="135px"></el-table-column>
<el-table-column prop="ilThreshed" label="裂缝阈值"></el-table-column>
<el-table-column prop="ilAdjust" label="校正功能"></el-table-column>
<el-table-column prop="ilSave" label="存储裂缝" ></el-table-column>
<el-table-column prop="ilSendTime" label="唤醒时间">
<template slot-scope="scope">
{{scope.row.time + '('+scope.row.timeUnit+')'}}
</template>
</el-table-column>
<el-table-column prop="ilSendSuccess" label="下发状态" ></el-table-column>
<el-table-column prop="ilSendTime" label="下发时间" min-width="145px"></el-table-column>
</el-table>
<!--分页组件-->
<el-pagination :total="form2.total" :current-page="form2.page" style="margin-top:8px;" layout="total, prev, pager, next, sizes" @size-change="sizeChange2" @current-change="pageChange2" />
</div>
</el-dialog>
</div>
</template>
<script>
import echarts from 'echarts';
import { Tools, HttpReq, Dates} from '@/assets/js/common.js';
import DateRangePicker from '@/components/DateRangePicker';
import cuAmap from '@/components/AMap';
import Axios from 'axios'
import EZUIKit from "ezuikit-js";
export default {
name: 'carFault',
components: {
DateRangePicker, cuAmap
},
name: 'CarFault',
components: {},
data() {
return {
loading: false,
......@@ -234,77 +78,18 @@ export default {
size: 10,
total: 0,
query:{},
picFileName:'',
tableData: [],
seeMoreData:{},
seeMoreImgUrl:"",
form: {
title:'添加设备', visible:false, reqType:'add', historyDialog:false,seeMoreDialog:false,
title:'新增车辆故障',
visible:false,
reqType:'add',
status:{cu:0},
selectList:[],
item:{},
monthSelectList:[
{name:'一月', value:'01'},
{name:'二月', value:'02'},
{name:'三月', value:'03'},
{name:'四月', value:'04'},
{name:'五月', value:'05'},
{name:'六月', value:'06'},
{name:'七月', value:'07'},
{name:'八月', value:'08'},
{name:'九月', value:'09'},
{name:'十月', value:'10'},
{name:'十一月', value:'11'},
{name:'十二月', value:'12'},
],
item2:{
value:''
},
},
rules: {
projectId: [
{required: true, message: '请选择项目', trigger: 'blur' }
],
id: [
{required: true, message: '请输入设备ID', trigger: 'blur' }
],
code: [
{required: true, message: '请输入设备识别码', trigger: 'blur' }
],
name: [
{required: true, message: '请输入设备名称', trigger: 'blur' }
],
},
form2:{
title:'指令下发', visible:false, logDialog:false, logVisible:false,
query:{},
page: 1,
size: 10,
total: 0,
status:{cu:0},
item:{
ecode: "",
ename:'',
ilAdjust:0,
ilSave:0,
time:'',
ilThreshed:0,
timekey:'ilTimHour',
},
adjustList:[
{name:'启动', value:1},
{name:'不启动', value:0},
],
saveList:[
{name:'存储', value:1},
{name:'不存储', value:0},
],
timeList:[
{name:'', value:'ilTimHour'},
{name:'', value:'ilTimMins'},
{name:'', value:'ilTimSec'},
],
formData:[],
// time: [
// {required: true, message: '请输入车辆型号', trigger: 'blur' }
// ],
},
}
},
......@@ -316,24 +101,25 @@ export default {
},
methods: {
loadData() {
var that = this;
var sort = 'addTime,desc';
var sort = 'createTime,desc';
var param = this.query;
param.page = this.page - 1;
param.size = this.size;
param.sort = sort;
//请求项目列表
this.reqProjectsSimple().then((list) => {
this.form.selectList = list;
});
let showData = [];
this.$nextTick(()=>{
HttpReq.plantFactory.getDeviceManageList(param).then((res) => {
//console.log(res);
HttpReq.truckDispatching.carFaultQuery(param).then((res) => {
if(res.code == 200){
this.loading = false;
this.tableData = res.content;
this.total = res.totalElements;
res.data.content.forEach((item,index)=>{
if(item.status == 1){
showData.push(item);
}
})
this.tableData = showData;
this.total = showData.length;
}
})
})
......@@ -346,47 +132,26 @@ export default {
}
return '';
},
// 点击搜索
toSearch() {
this.page = 1
this.loadData()
},
clearLimit(){ // 清除限制
this.loadData()
},
cancelForm(a, b, c){
this.form.visible = false;
},
cancelForm2(){
this.form.historyDialog = false;
},
toAdd() {
// 请除表单验证
this.$refs['form1'] && this.$refs['form1'].clearValidate();
this.form.title = '添加设备';
this.form.title = '新增车辆故障';
this.form.status.cu = 0;
this.form.visible = true;
this.form.reqType = 'add';
this.form.item = {};
this.picFileName = '';
//请求项目列表
this.reqProjectsSimple().then((list) => {
this.form.selectList = list
});
},
toEdit(item) {
// 请除表单验证
this.$refs['form1'] && this.$refs['form1'].clearValidate();
this.form.title = '编辑设备';
this.form.title = '修改车辆故障并删除此条数据';
this.form.status.cu = 0;
this.form.visible = true;
this.form.item = item;
this.form.item = {...item};
this.form.reqType = 'edit';
this.picFileName = this.form.item.position;
//请求项目列表
this.reqProjectsSimple().then((list) => {
this.form.selectList = list
});
},
toDelete(item) {
var id = item.id;
......@@ -396,103 +161,7 @@ export default {
type: 'warning'
}).then((e) => {
this.reqRemoveProject([id])
}).catch((e) => {
})
},
//查看图片以及其他信息
toSeeMore(row){
//console.log(row);
this.seeMoreData = row;
this.seeMoreImgUrl = process.env.VUE_APP_LOCAL_API2 + "/avatar/" + row.position;
this.form.seeMoreDialog = true;
this.$nextTick(()=>{
let videoContainer = document.querySelector('#video-container');
videoContainer.innerHTML = '';
var player = new EZUIKit.EZUIKitPlayer({
autoplay: true,
id: 'video-container',
accessToken:'at.4qo66bb35a19h07a0d9pbmtj5v4g0o78-4jmzdu3k24-0866je6-qkz1xuwmf',
url: 'ezopen://open.ys7.com/J16440511/1.live',
template: "simple", // simple - 极简版;standard-标准版;security - 安防版(预览回放);voice-语音版;
width: 530,
height: 320
});
})
},
toHistoryLog(item){
this.form.historyDialog = true;
this.form.item2.value = Dates.format('MM');
this.form.item2.code = item.ecode;
this.$nextTick(() => {
var ecahrtEl = document.getElementById("ecahrtA");
this.ecahrtA = this.ecahrtA || this.createPanelEcharts(ecahrtEl);
this.reqHistoryList(this.form.item2);
});
},
cancelForm3(a, b, c){
this.form2.visible = false;
},
cancelForm4(a, b, c){
this.form2.logVisible = false;
},
// 指令下发
toInstructionSet(item){
var form2 = this.form2;
// 请除表单验证
//this.$refs['form1'] && this.$refs['form1'].clearValidate();
form2.title = '指令下发';
form2.status.cu = 0;
form2.visible = true;
form2.reqType = 'edit';
form2.item = {
ecode:item.ecode,
subcode:item.subcode,
ilAdjust:form2.item.ilAdjust,
ilSave:form2.item.ilSave,
timekey:form2.item.timekey,
time:'',
};
},
// 指令日志
toInstructionLog(item){
var form2 = this.form2;
// 请除表单验证
//this.$refs['form1'] && this.$refs['form1'].clearValidate();
form2.title = '下发日志';
form2.logVisible = true;
form2.item = item;
var param = form2.query;
param.page = form2.page - 1;
param.size = form2.size;
param.sort = 'addTime,desc';
param.deviceId = item.ecode;
HttpReq.equipment.getInstructionLog(param).then((res) => {
if(res){
form2.total = res.totalElements;
var formData = res.content || [],
timeKeys = {'ilTimHour':'小时','ilTimMins':'分钟','ilTimSec':''};
for(var fitem of formData){
fitem.subcode = item.subcode;
for(var key in timeKeys){
if(fitem[key] || fitem[key] === 0){
fitem['time'] = fitem[key];
fitem.timeUnit = timeKeys[key];
}else{
delete fitem[key]
}
};
fitem.ilAdjust = ['不启动', '启动'][fitem.ilAdjust || 0];
fitem.ilSave = ['不存储', '存储'][fitem.ilSave || 0];
fitem.ilSendSuccess = ['下发失败', '下发成功'][fitem.ilSendSuccess || 0];
};
form2.formData = formData;
};
}).catch(function(error) {
console.log('error ________________ ', error);
});
}).catch((e) => {})
},
pageChange(e) {
this.page = e
......@@ -503,15 +172,6 @@ export default {
this.size = e
this.loadData()
},
pageChange2(e) {
this.form2.page = e
this.reqInstructionLog(this.form2.item)
},
sizeChange2(e) {
this.form2.page = 1;
this.form2.size = e;
this.reqInstructionLog(this.form2.item);
},
submitForm(validateName, item){
if(!this.form.status.cu){
this.form.status.cu = 2;
......@@ -528,36 +188,22 @@ export default {
});
};
},
findHistory(){
this.reqHistoryList(this.form.item2);
},
//请求项目列表
reqProjectsSimple(){
return HttpReq.project.getProject().then((res) => {
if(res.code == 200){
return res.data.content;
}else{
return []
}
})
},
//添加设备
//新增车辆故障
reqAddItem(form, item){
let lastData = item;
lastData.position = this.picFileName;
HttpReq.plantFactory.addDeviceManageList(lastData).then((res) => {
let lastData = {...item};
lastData.status = 1;
HttpReq.truckDispatching.carFaultAdd(lastData).then((res) => {
form.visible = false;
if(res == 1){
if(res.code == 200){
this.$notify({
title: '项目添加成功!',
title: '车辆故障新增成功!',
type: 'success',
duration: 2500
});
this.loadData()
}else{
this.$notify({
title: res.head.message,
title: res.msg,
type: 'error',
duration: 2500
})
......@@ -566,36 +212,43 @@ export default {
form.status.cu = 0
});
},
//修改设备
//修改车辆故障
reqUpdateItem(form, item){
let lastData = item;
lastData.position = this.picFileName;
HttpReq.plantFactory.upDateDeviceManageList(lastData).then((res) => {
let lastData = {...item};
this.$confirm('确认处理故障并且删除该条数据吗?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then((e) => {
HttpReq.truckDispatching.carFaultUpdate(lastData).then((res) => {
form.visible = false;
if(res.status == 400){
this.$notify({
title: res.head.message,
type: 'error',
duration: 2500
})
}else{
if(res.code == 200){
this.$notify({
title: '修改成功!',
title: '车辆故障处理成功!',
type: 'success',
duration: 2500
});
this.loadData()
}else{
this.$notify({
title: res.msg,
type: 'error',
duration: 2500
})
}
}).catch(function(error) {
form.status.cu = 0
});
}).catch((e) => {
form.status.cu = 0
})
},
//删除设备
//删除车辆故障
reqRemoveProject(item){
HttpReq.plantFactory.removeDeviceManageList(item).then((res) => {
HttpReq.truckDispatching.carFaultDel(item).then((res) => {
if(res.status == 400){
this.$notify({
title: res.head.message,
title: res.msg,
type: 'error',
duration: 2500
})
......@@ -609,229 +262,10 @@ export default {
this.loadData();
})
},
reqHistoryList(item){
var timeSpace = this.query.timeSpace;
var startTime = timeSpace ? timeSpace[0].split(' ')[0] : '';
var endTime = timeSpace ? timeSpace[1].split(' ')[0] : '';
HttpReq.historys.getItemBycode({codes:item.code, startTime:startTime, endTime:endTime}).then((res) => {
if(res.head.code === '0000'){
var body = res.body || {};
var list = body.list || [];
var xAxisData = [];
var helement = [];
var htemperature = [];
var hlenght1 = [], hlenght2 = [], hlenght3 = [];
for(var item of list){
xAxisData.push(item.createTime);
helement.push(item.helement);
htemperature.push(item.htemperature);
hlenght1.push(item.hlenght1);
hlenght2.push(item.hlenght2);
hlenght3.push(item.hlenght3);
};
this.ecahrtA.setData({
xAxis: [
{
type: 'category',
data: xAxisData,
},
],
series: [
{
name: '电压',
data: helement,
},
{
name: '温度',
data: htemperature,
},
{
name: '裂缝1',
data: hlenght1,
//车辆状态转换
statusChange(row){
return row.status == '0' ? '正常' : '故障' ;
},
{
name: '裂缝2',
data: hlenght2,
},
{
name: '裂缝3',
data: hlenght3,
}
]
})
};
}).catch(function(error) {
console.log('catch __ ', error);
})
},
createPanelEcharts(el){
var myChart = echarts.init(el),
lineColor = 'green';
var option = {
title: {
text: '',
subtext: '设备值'
},
tooltip: {
trigger: 'axis'
},
legend: {
data: ['电压', '温度', '裂缝1', '裂缝2', '裂缝3'],
textStyle: {
color: "#000"
},
},
textStyle: {
color: "#333"
},
calculable: true,
xAxis: [
{
type: 'category',
data: [],
}
],
yAxis: [
{
type: 'value',
}
],
grid:{
top:40,
right:10,
bottom:20,
left:45,
},
series: [
{
name: '电压',
type: 'line',
data: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
//itemStyle: {normal: {areaStyle: {type: 'default', color:'#00e5ff'}, color:'#00e5ff'}, color:'green'},
},
{
name: '温度',
type: 'line',
data: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
},
{
name: '裂缝1',
type: 'line',
data: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
//itemStyle: {normal: {areaStyle: {type:'default', color:'red'}, color:'#1849fe'}, color:'red'},
},
{
name: '裂缝2',
type: 'line',
data: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
},
{
name: '裂缝3',
type: 'line',
data: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
}
]
};
myChart.setOption(option);
var setData = function(option){
myChart.hideLoading();
myChart.setOption(option)
};
return {setData:setData, myChart:myChart}
},
reqSetInstruction(form, item){
var param = {
deviceId:item.ecode,
ilAdjust:item.ilAdjust,
ilSave:item.ilSave,
ilThreshed:item.ilThreshed || 0,
[item.timekey]:item.time || 0,
};
HttpReq.equipment.setInstruction(param).then((res) => {
this.form2.visible = false;
this.$notify({
title: '修改成功!',
type: 'success',
duration: 2500
});
this.loadData()
}).catch(function(error) {
this.form2.status.cu = 0;
this.$notify({
title: error,
type: 'error',
duration: 2500
})
});
},
reqInstructionLog(item){
var form2 = this.form2;
var param = form2.query;
param.page = form2.page - 1;
param.size = form2.size;
param.sort = 'addTime,desc';
param.deviceId = item.ecode;
HttpReq.equipment.getInstructionLog(param).then((res) => {
if(res){
form2.total = res.totalElements;
var formData = res.content || [],
timeKeys = {'ilTimHour':'小时','ilTimMins':'分钟','ilTimSec':''};
for(var fitem of formData){
fitem.subcode = item.subcode;
for(var key in timeKeys){
if(fitem[key]){
fitem['time'] = fitem[key];
fitem.timeUnit = timeKeys[key];
}else{
delete fitem[key]
}
};
fitem.ilAdjust = ['不启动', '启动'][fitem.ilAdjust || 0];
fitem.ilSave = ['不存储', '存储'][fitem.ilSave || 0];
fitem.ilSendSuccess = ['下发失败', '下发成功'][fitem.ilSendSuccess || 0];
};
form2.formData = formData;
};
}).catch(function(error) {
console.log('error ________________ ', error);
});
},
//图片上传
excelImport(event) {
let that = this;
let file = event.target.files[0];
let formData1 = new FormData();
formData1.append("avatar", file);
Axios({
url: process.env.VUE_APP_LOCAL_API2 + '/api/wEquipment/updateAvatar',
method: "post",
data: formData1,
}).then(
response => {
if (response.status == 200) {
this.$message.success("上传成功");
that.picFileName = response.data.avatar;
} else {
this.$message.error("上传失败");
}
},
)
.catch(error => {
console.log(error);
});
},
//项目名称展示
formatter(row){
let proName = "";
this.form.selectList.forEach(function(item){
if(row.projectId == item.id){
proName = item.name;
}
})
return proName
}
}
}
</script>
......
<template>
<div class="common-page device-manage">
<div class="option page-row">
<!--工具栏-->
<div class="head-container">
<!-- 搜索 -->
<label class="el-form-item-label" style="font-weight: 500;">设备识别码</label>
<el-input v-model="query.code" clearable size="small" placeholder="请输入设备识别码" style="width:180px;" @clear="clearLimit"/>
<el-button size="mini" type="success" icon="el-icon-search" @click="toSearch">搜索</el-button>
</div>
</div>
<!-- 表格 -->
<div class="panel-bottom page-row">
<h3>设备管理列表</h3>
<h3>车队管理</h3>
<div class="ctin-box">
<div class="content-within">
<div class="content-fix">
......@@ -19,30 +12,15 @@
</div>
<div class="content">
<el-table :data="tableData" v-loading="loading" border style="width:auto" :row-class-name="tableRowClassName">
<el-table-column prop="id" label="设备ID" align="center"></el-table-column>
<el-table-column prop="code" label="设备识别码" align="center"></el-table-column>
<el-table-column prop="name" label="设备名称" align="center"></el-table-column>
<el-table-column prop="alarmWindspeed" label="风速报警阈值" align="center"></el-table-column>
<el-table-column prop="alarmTemperature" label="温度报警阈值" align="center"></el-table-column>
<el-table-column prop="alarmHumidity" label="湿度报警阈值" align="center"></el-table-column>
<el-table-column prop="alarmCo2" label="二氧化碳报警阈值" align="center"></el-table-column>
<el-table-column prop="alarmMlux" label="光照报警阈值" align="center"></el-table-column>
<el-table-column prop="alarmPh" label="酸碱度报警阈值" align="center"></el-table-column>
<el-table-column prop="alarmWaterTemperature" label="水温报警阈值" align="center"></el-table-column>
<el-table-column prop="alarmElectricalConductance" label="电导率报警阈值" align="center"></el-table-column>
<el-table-column prop="alarmWaterDepth" label="液位报警阈值" align="center"></el-table-column>
<el-table-column prop="createTime" label="设备激活时间" align="center"></el-table-column>
<el-table-column prop="addTime" label="最后采集时间" align="center"></el-table-column>
<el-table-column prop="projectId" label="所属项目" align="center" :formatter="formatter"></el-table-column>
<el-table-column label="操作" min-width="180px" align="center" fixed="right">
<el-table-column prop="id" label="序号" align="center"></el-table-column>
<el-table-column prop="name" label="车队名称" align="center"></el-table-column>
<el-table-column prop="carclass" label="车辆类型" align="center"></el-table-column>
<el-table-column prop="area" label="所属矿区" align="center"></el-table-column>
<el-table-column prop="createTime" label="日期" align="center"></el-table-column>
<el-table-column label="操作" align="center" fixed="right">
<template slot-scope="scope">
<el-button size="mini" type="success" icon="el-icon-view" @click="toSeeMore(scope.row)"></el-button>
<el-button size="mini" type="primary" icon="el-icon-edit" @click="toEdit(scope.row)"></el-button>
<el-button size="mini" type="danger" icon="el-icon-delete" @click="toDelete(scope.row)"></el-button>
<!-- <div class="btn-groub2">
<el-button size="mini" type="warning" icon="el-icon-set-up" @click="toInstructionSet(scope.row)"></el-button>
<el-button size="mini" type="info" icon="el-icon-tickets" @click="toInstructionLog(scope.row)"></el-button>
</div> -->
</template>
</el-table-column>
</el-table>
......@@ -57,176 +35,39 @@
<!-- 表单渲染 -->
<el-dialog append-to-body :close-on-click-modal="true" :before-close="cancelForm" :visible.sync="form.visible" :title="form.title" width="700px">
<el-form :model="form.item" :rules="rules" ref="form1" :inline="true" size="small" label-width="150px">
<el-form-item label="选择项目" prop="projectId" >
<el-select v-model="form.item.projectId" placeholder="请选择项目" size="small">
<el-option v-for="(obj,index) in form.selectList" :label="obj.name" :value="obj.id" :key="index"></el-option>
</el-select>
</el-form-item>
<!-- <el-form-item label="设备ID" prop="id">
<el-input v-model="form.item.id" style="width:280px;" placeholder="请输入设备编号" :disabled="form.reqType==='edit'"/>
</el-form-item> -->
<el-form-item label="设备识别码" prop="code">
<el-input v-model="form.item.code" style="width:260px;" placeholder="请输入设备识别码" :disabled="form.reqType==='edit'"/>
</el-form-item>
<el-form-item label="设备名称" prop="name">
<el-input v-model="form.item.name" style="width:260px;" placeholder="请输入设备名称"/>
</el-form-item>
<el-form-item label="风速报警阈值" prop="alarmWindspeed" >
<el-input v-model="form.item.alarmWindspeed" style="width:160px;" placeholder="请输入风速报警阈值"/>
</el-form-item>
<el-form-item label="温度报警阈值" prop="alarmTemperature" >
<el-input v-model="form.item.alarmTemperature" style="width:160px;" placeholder="请输入温度报警阈值"/>
</el-form-item>
<el-form-item label="湿度报警阈值" prop="alarmHumidity" >
<el-input v-model="form.item.alarmHumidity" style="width:160px;" placeholder="请输入湿度报警阈值"/>
</el-form-item>
<el-form-item label="二氧化碳报警阈值" prop="alarmCo2" >
<el-input v-model="form.item.alarmCo2" style="width:160px;" placeholder="请输入二氧化碳报警阈值"/>
</el-form-item>
<el-form-item label="光照报警阈值" prop="alarmMlux" >
<el-input v-model="form.item.alarmMlux" style="width:160px;" placeholder="请输入光照报警阈值"/>
</el-form-item>
<el-form-item label="酸碱度报警阈值" prop="alarmPh" >
<el-input v-model="form.item.alarmPh" style="width:160px;" placeholder="请输入酸碱度报警阈值"/>
</el-form-item>
<el-form-item label="水温报警阈值" prop="alarmWaterTemperature" >
<el-input v-model="form.item.alarmWaterTemperature" style="width:160px;" placeholder="请输入水温报警阈值"/>
</el-form-item>
<el-form-item label="电导率报警阈值" prop="alarmElectricalConductance" >
<el-input v-model="form.item.alarmElectricalConductance" style="width:160px;" placeholder="请输入电导率报警阈值"/>
</el-form-item>
<el-form-item label="液位报警阈值" prop="alarmWaterDepth" >
<el-input v-model="form.item.alarmWaterDepth" style="width:160px;" placeholder="请输入液位报警阈值"/>
</el-form-item>
<el-form-item label="上传设备位置" prop="position">
<el-input v-model="picFileName" style="width:160px;" placeholder="请上传设备位置" disabled />
<input type="file" name="image" @change="excelImport($event)" />
</el-form-item>
<div style="margin:0px 0px 10px 55px;font-size:16px;font-weight:bold;">摄像头参数配置</div>
<el-form-item label="摄像头ID" prop="camera">
<el-input v-model="form.item.camera" style="width:160px;" placeholder="请输入摄像头ID"/>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="text" @click="cancelForm">取消</el-button>
<el-button :loading="form.status.cu === 2" type="primary" @click="submitForm('form1', form.item)">确认</el-button>
</div>
</el-dialog>
<!-- 查看更多 -->
<el-dialog title="查看设备" :visible.sync="form.seeMoreDialog" width="800px">
<el-form :model="seeMoreData" style="margin-top:20px;">
<el-form-item label="摄像头位置图片" label-width="150px">
<el-image :src="seeMoreImgUrl" style="width:300px;"></el-image>
</el-form-item>
<el-form-item label="摄像头图像" label-width="150px">
<div id="video-container" style="width:550px;height:350px"></div>
</el-form-item>
<el-form-item label="摄像头ID" label-width="150px">
<el-input v-model="seeMoreData.camera" style="width:200px"></el-input>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="form.seeMoreDialog = false">关闭</el-button>
</div>
</el-dialog>
<!-- 历史图表 -->
<el-dialog class="ecahrt1-dialog" append-to-body :close-on-click-modal="false" :before-close="cancelForm2" :visible.sync="form.historyDialog">
<el-form :rules="rules" ref="form1" :inline="true" size="small" label-width="80px">
<!-- <el-form-item prop="eprogramid" >
<el-select v-model="form.item2.value" placeholder="请选择月份">
<el-option v-for="obj in form.monthSelectList" :label="obj.name" :value="obj.value"></el-option>
</el-select>
</el-form-item> -->
<el-form-item prop="eprogramid" >
<date-range-picker v-model="query.timeSpace" class="date-item" />
</el-form-item>
<el-form-item >
<el-button type="primary" @click="findHistory">查询</el-button>
</el-form-item>
<el-form-item prop="content" style="display:block;" >
<div class="form-body">
<div id="ecahrtA"></div>
</div>
</el-form-item>
</el-form>
</el-dialog>
<!-- 指令下发 -->
<el-dialog append-to-body :close-on-click-modal="false" :before-close="cancelForm3" :visible.sync="form2.visible" :title="form2.title" width="600px">
<el-form :model="form2.item" :rules="rules" ref="form2" :inline="true" size="small" label-width="100px">
<el-form-item label="设备ID" prop="ecode">
<el-input v-model="form2.item.ecode" style="width:280px;" placeholder="请输入设备编号" :disabled="form2.reqType==='edit'"/>
</el-form-item>
<el-form-item label="设备识别码" prop="subcode">
<el-input v-model="form2.item.subcode" style="width:260px;" placeholder="请输入设备识别码" :disabled="form2.reqType==='edit'"/>
</el-form-item>
<el-form-item label="是否启动校正" prop="ilAdjust" style="width:240px;">
<el-select v-model="form2.item.ilAdjust" placeholder="请选择" size="small" style="width:120px;">
<el-option v-for="obj in form2.adjustList" :label="obj.name" :key="obj.value" :value="obj.value"></el-option>
</el-select>
<el-form-item label="车队名称" prop="name">
<el-input v-model="form.item.name" style="width:280px;" placeholder="请输入车队名称"/>
</el-form-item>
<el-form-item label="是否存储裂缝" prop="ilSave" style="width:240px;">
<el-select v-model="form2.item.ilSave" placeholder="请选择" size="small" style="width:120px;">
<el-option v-for="(obj,index) in form2.saveList" :label="obj.name" :value="obj.value" :key="index"></el-option>
<el-form-item label="所属车辆类型" prop="carclass">
<el-select v-model="form.item.carclass" placeholder="请选择车辆类型" style="width:280px;">
<el-option label="挖机" value="挖机"></el-option>
<el-option label="铲车" value="铲车"></el-option>
<el-option label="卡车" value="卡车"></el-option>
<el-option label="清扫车" value="清扫车"></el-option>
</el-select>
</el-form-item>
<el-form-item label="裂缝阈值" prop="ilThreshed" >
<el-input v-model="form2.item.ilThreshed" style="width:160px;" placeholder="请输入裂缝阈值"/>
<span style="color:#aaa;">1~255</span>
</el-form-item>
<el-form-item label="唤醒周期" prop="timekey" >
<el-select v-model="form2.item.timekey" placeholder="请选择时间" size="small" style="width:120px;">
<el-option v-for="(obj,index) in form2.timeList" :label="obj.name" :value="obj.value" :key="index"></el-option>
<el-form-item label="所属矿区" prop="area">
<el-select v-model="form.item.area" placeholder="请选择所属矿区" style="width:280px;">
<el-option label="矿区1" value="矿区1"></el-option>
<el-option label="矿区2" value="矿区2"></el-option>
</el-select>
<el-input v-model="form2.item.time" style="width:160px;" placeholder="请输入时长"/>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="text" @click="cancelForm3">取消</el-button>
<el-button :loading="form2.status.cu === 2" type="primary" @click="reqSetInstruction('form2', form2.item)">确认</el-button>
<el-button type="text" @click="cancelForm">取消</el-button>
<el-button :loading="form.status.cu === 2" type="primary" @click="submitForm('form1', form.item)">确认</el-button>
</div>
</el-dialog>
<!-- 指令日志 -->
<el-dialog append-to-body :close-on-click-modal="false" :before-close="cancelForm4" :visible.sync="form2.logVisible" :title="form2.title" width="65%">
<div class="content">
<el-table :data="form2.formData" v-loading="loading" border style="width:auto" :row-class-name="tableRowClassName">
<el-table-column prop="subcode" label="设备识别码" min-width="135px"></el-table-column>
<el-table-column prop="ilThreshed" label="裂缝阈值"></el-table-column>
<el-table-column prop="ilAdjust" label="校正功能"></el-table-column>
<el-table-column prop="ilSave" label="存储裂缝" ></el-table-column>
<el-table-column prop="ilSendTime" label="唤醒时间">
<template slot-scope="scope">
{{scope.row.time + '('+scope.row.timeUnit+')'}}
</template>
</el-table-column>
<el-table-column prop="ilSendSuccess" label="下发状态" ></el-table-column>
<el-table-column prop="ilSendTime" label="下发时间" min-width="145px"></el-table-column>
</el-table>
<!--分页组件-->
<el-pagination :total="form2.total" :current-page="form2.page" style="margin-top:8px;" layout="total, prev, pager, next, sizes" @size-change="sizeChange2" @current-change="pageChange2" />
</div>
</el-dialog>
</div>
</template>
<script>
import echarts from 'echarts';
import { Tools, HttpReq, Dates} from '@/assets/js/common.js';
import DateRangePicker from '@/components/DateRangePicker';
import cuAmap from '@/components/AMap';
import Axios from 'axios'
import EZUIKit from "ezuikit-js";
export default {
name: 'carFleet',
components: {
DateRangePicker, cuAmap
},
name: 'CarFleet',
components: {},
data() {
return {
loading: false,
......@@ -234,77 +75,18 @@ export default {
size: 10,
total: 0,
query:{},
picFileName:'',
tableData: [],
seeMoreData:{},
seeMoreImgUrl:"",
form: {
title:'添加设备', visible:false, reqType:'add', historyDialog:false,seeMoreDialog:false,
title:'新增车队',
visible:false,
reqType:'add',
status:{cu:0},
selectList:[],
item:{},
monthSelectList:[
{name:'一月', value:'01'},
{name:'二月', value:'02'},
{name:'三月', value:'03'},
{name:'四月', value:'04'},
{name:'五月', value:'05'},
{name:'六月', value:'06'},
{name:'七月', value:'07'},
{name:'八月', value:'08'},
{name:'九月', value:'09'},
{name:'十月', value:'10'},
{name:'十一月', value:'11'},
{name:'十二月', value:'12'},
],
item2:{
value:''
},
},
rules: {
projectId: [
{required: true, message: '请选择项目', trigger: 'blur' }
],
id: [
{required: true, message: '请输入设备ID', trigger: 'blur' }
],
code: [
{required: true, message: '请输入设备识别码', trigger: 'blur' }
],
name: [
{required: true, message: '请输入设备名称', trigger: 'blur' }
],
},
form2:{
title:'指令下发', visible:false, logDialog:false, logVisible:false,
query:{},
page: 1,
size: 10,
total: 0,
status:{cu:0},
item:{
ecode: "",
ename:'',
ilAdjust:0,
ilSave:0,
time:'',
ilThreshed:0,
timekey:'ilTimHour',
},
adjustList:[
{name:'启动', value:1},
{name:'不启动', value:0},
],
saveList:[
{name:'存储', value:1},
{name:'不存储', value:0},
],
timeList:[
{name:'', value:'ilTimHour'},
{name:'', value:'ilTimMins'},
{name:'', value:'ilTimSec'},
],
formData:[],
// time: [
// {required: true, message: '请输入车辆型号', trigger: 'blur' }
// ],
},
}
},
......@@ -316,24 +98,19 @@ export default {
},
methods: {
loadData() {
var that = this;
var sort = 'addTime,desc';
var sort = 'createTime,desc';
var param = this.query;
param.page = this.page - 1;
param.size = this.size;
param.sort = sort;
//请求项目列表
this.reqProjectsSimple().then((list) => {
this.form.selectList = list;
});
this.$nextTick(()=>{
HttpReq.plantFactory.getDeviceManageList(param).then((res) => {
//console.log(res);
HttpReq.truckDispatching.carFleetQuery(param).then((res) => {
if(res.code == 200){
this.loading = false;
this.tableData = res.content;
this.total = res.totalElements;
this.tableData = res.data.content;
this.total = res.data.totalElements;
}
})
})
......@@ -346,47 +123,26 @@ export default {
}
return '';
},
// 点击搜索
toSearch() {
this.page = 1
this.loadData()
},
clearLimit(){ // 清除限制
this.loadData()
},
cancelForm(a, b, c){
this.form.visible = false;
},
cancelForm2(){
this.form.historyDialog = false;
},
toAdd() {
// 请除表单验证
this.$refs['form1'] && this.$refs['form1'].clearValidate();
this.form.title = '添加设备';
this.form.title = '新增车队';
this.form.status.cu = 0;
this.form.visible = true;
this.form.reqType = 'add';
this.form.item = {};
this.picFileName = '';
//请求项目列表
this.reqProjectsSimple().then((list) => {
this.form.selectList = list
});
},
toEdit(item) {
// 请除表单验证
this.$refs['form1'] && this.$refs['form1'].clearValidate();
this.form.title = '编辑设备';
this.form.title = '修改车队';
this.form.status.cu = 0;
this.form.visible = true;
this.form.item = item;
this.form.item = {...item};
this.form.reqType = 'edit';
this.picFileName = this.form.item.position;
//请求项目列表
this.reqProjectsSimple().then((list) => {
this.form.selectList = list
});
},
toDelete(item) {
var id = item.id;
......@@ -396,103 +152,7 @@ export default {
type: 'warning'
}).then((e) => {
this.reqRemoveProject([id])
}).catch((e) => {
})
},
//查看图片以及其他信息
toSeeMore(row){
//console.log(row);
this.seeMoreData = row;
this.seeMoreImgUrl = process.env.VUE_APP_LOCAL_API2 + "/avatar/" + row.position;
this.form.seeMoreDialog = true;
this.$nextTick(()=>{
let videoContainer = document.querySelector('#video-container');
videoContainer.innerHTML = '';
var player = new EZUIKit.EZUIKitPlayer({
autoplay: true,
id: 'video-container',
accessToken:'at.4qo66bb35a19h07a0d9pbmtj5v4g0o78-4jmzdu3k24-0866je6-qkz1xuwmf',
url: 'ezopen://open.ys7.com/J16440511/1.live',
template: "simple", // simple - 极简版;standard-标准版;security - 安防版(预览回放);voice-语音版;
width: 530,
height: 320
});
})
},
toHistoryLog(item){
this.form.historyDialog = true;
this.form.item2.value = Dates.format('MM');
this.form.item2.code = item.ecode;
this.$nextTick(() => {
var ecahrtEl = document.getElementById("ecahrtA");
this.ecahrtA = this.ecahrtA || this.createPanelEcharts(ecahrtEl);
this.reqHistoryList(this.form.item2);
});
},
cancelForm3(a, b, c){
this.form2.visible = false;
},
cancelForm4(a, b, c){
this.form2.logVisible = false;
},
// 指令下发
toInstructionSet(item){
var form2 = this.form2;
// 请除表单验证
//this.$refs['form1'] && this.$refs['form1'].clearValidate();
form2.title = '指令下发';
form2.status.cu = 0;
form2.visible = true;
form2.reqType = 'edit';
form2.item = {
ecode:item.ecode,
subcode:item.subcode,
ilAdjust:form2.item.ilAdjust,
ilSave:form2.item.ilSave,
timekey:form2.item.timekey,
time:'',
};
},
// 指令日志
toInstructionLog(item){
var form2 = this.form2;
// 请除表单验证
//this.$refs['form1'] && this.$refs['form1'].clearValidate();
form2.title = '下发日志';
form2.logVisible = true;
form2.item = item;
var param = form2.query;
param.page = form2.page - 1;
param.size = form2.size;
param.sort = 'addTime,desc';
param.deviceId = item.ecode;
HttpReq.equipment.getInstructionLog(param).then((res) => {
if(res){
form2.total = res.totalElements;
var formData = res.content || [],
timeKeys = {'ilTimHour':'小时','ilTimMins':'分钟','ilTimSec':''};
for(var fitem of formData){
fitem.subcode = item.subcode;
for(var key in timeKeys){
if(fitem[key] || fitem[key] === 0){
fitem['time'] = fitem[key];
fitem.timeUnit = timeKeys[key];
}else{
delete fitem[key]
}
};
fitem.ilAdjust = ['不启动', '启动'][fitem.ilAdjust || 0];
fitem.ilSave = ['不存储', '存储'][fitem.ilSave || 0];
fitem.ilSendSuccess = ['下发失败', '下发成功'][fitem.ilSendSuccess || 0];
};
form2.formData = formData;
};
}).catch(function(error) {
console.log('error ________________ ', error);
});
}).catch((e) => {})
},
pageChange(e) {
this.page = e
......@@ -503,15 +163,6 @@ export default {
this.size = e
this.loadData()
},
pageChange2(e) {
this.form2.page = e
this.reqInstructionLog(this.form2.item)
},
sizeChange2(e) {
this.form2.page = 1;
this.form2.size = e;
this.reqInstructionLog(this.form2.item);
},
submitForm(validateName, item){
if(!this.form.status.cu){
this.form.status.cu = 2;
......@@ -528,36 +179,21 @@ export default {
});
};
},
findHistory(){
this.reqHistoryList(this.form.item2);
},
//请求项目列表
reqProjectsSimple(){
return HttpReq.project.getProject().then((res) => {
if(res.code == 200){
return res.data.content;
}else{
return []
}
})
},
//添加设备
//新增车队
reqAddItem(form, item){
let lastData = item;
lastData.position = this.picFileName;
HttpReq.plantFactory.addDeviceManageList(lastData).then((res) => {
let lastData = {...item};
HttpReq.truckDispatching.carFleetAdd(lastData).then((res) => {
form.visible = false;
if(res == 1){
if(res.code == 200){
this.$notify({
title: '项目添加成功!',
title: '车队新增成功!',
type: 'success',
duration: 2500
});
this.loadData()
}else{
this.$notify({
title: res.head.message,
title: res.msg,
type: 'error',
duration: 2500
})
......@@ -566,36 +202,35 @@ export default {
form.status.cu = 0
});
},
//修改设备
//修改车队
reqUpdateItem(form, item){
let lastData = item;
lastData.position = this.picFileName;
HttpReq.plantFactory.upDateDeviceManageList(lastData).then((res) => {
let lastData = {...item};
HttpReq.truckDispatching.carFleetUpdate(lastData).then((res) => {
form.visible = false;
if(res.status == 400){
this.$notify({
title: res.head.message,
type: 'error',
duration: 2500
})
}else{
if(res.code == 200){
this.$notify({
title: '修改成功!',
title: '车队修改成功!',
type: 'success',
duration: 2500
});
this.loadData()
}else{
this.$notify({
title: res.msg,
type: 'error',
duration: 2500
})
}
}).catch(function(error) {
form.status.cu = 0
});
},
//删除设备
//删除车队
reqRemoveProject(item){
HttpReq.plantFactory.removeDeviceManageList(item).then((res) => {
HttpReq.truckDispatching.carFleetDel(item).then((res) => {
if(res.status == 400){
this.$notify({
title: res.head.message,
title: res.msg,
type: 'error',
duration: 2500
})
......@@ -609,229 +244,6 @@ export default {
this.loadData();
})
},
reqHistoryList(item){
var timeSpace = this.query.timeSpace;
var startTime = timeSpace ? timeSpace[0].split(' ')[0] : '';
var endTime = timeSpace ? timeSpace[1].split(' ')[0] : '';
HttpReq.historys.getItemBycode({codes:item.code, startTime:startTime, endTime:endTime}).then((res) => {
if(res.head.code === '0000'){
var body = res.body || {};
var list = body.list || [];
var xAxisData = [];
var helement = [];
var htemperature = [];
var hlenght1 = [], hlenght2 = [], hlenght3 = [];
for(var item of list){
xAxisData.push(item.createTime);
helement.push(item.helement);
htemperature.push(item.htemperature);
hlenght1.push(item.hlenght1);
hlenght2.push(item.hlenght2);
hlenght3.push(item.hlenght3);
};
this.ecahrtA.setData({
xAxis: [
{
type: 'category',
data: xAxisData,
},
],
series: [
{
name: '电压',
data: helement,
},
{
name: '温度',
data: htemperature,
},
{
name: '裂缝1',
data: hlenght1,
},
{
name: '裂缝2',
data: hlenght2,
},
{
name: '裂缝3',
data: hlenght3,
}
]
})
};
}).catch(function(error) {
console.log('catch __ ', error);
})
},
createPanelEcharts(el){
var myChart = echarts.init(el),
lineColor = 'green';
var option = {
title: {
text: '',
subtext: '设备值'
},
tooltip: {
trigger: 'axis'
},
legend: {
data: ['电压', '温度', '裂缝1', '裂缝2', '裂缝3'],
textStyle: {
color: "#000"
},
},
textStyle: {
color: "#333"
},
calculable: true,
xAxis: [
{
type: 'category',
data: [],
}
],
yAxis: [
{
type: 'value',
}
],
grid:{
top:40,
right:10,
bottom:20,
left:45,
},
series: [
{
name: '电压',
type: 'line',
data: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
//itemStyle: {normal: {areaStyle: {type: 'default', color:'#00e5ff'}, color:'#00e5ff'}, color:'green'},
},
{
name: '温度',
type: 'line',
data: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
},
{
name: '裂缝1',
type: 'line',
data: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
//itemStyle: {normal: {areaStyle: {type:'default', color:'red'}, color:'#1849fe'}, color:'red'},
},
{
name: '裂缝2',
type: 'line',
data: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
},
{
name: '裂缝3',
type: 'line',
data: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
}
]
};
myChart.setOption(option);
var setData = function(option){
myChart.hideLoading();
myChart.setOption(option)
};
return {setData:setData, myChart:myChart}
},
reqSetInstruction(form, item){
var param = {
deviceId:item.ecode,
ilAdjust:item.ilAdjust,
ilSave:item.ilSave,
ilThreshed:item.ilThreshed || 0,
[item.timekey]:item.time || 0,
};
HttpReq.equipment.setInstruction(param).then((res) => {
this.form2.visible = false;
this.$notify({
title: '修改成功!',
type: 'success',
duration: 2500
});
this.loadData()
}).catch(function(error) {
this.form2.status.cu = 0;
this.$notify({
title: error,
type: 'error',
duration: 2500
})
});
},
reqInstructionLog(item){
var form2 = this.form2;
var param = form2.query;
param.page = form2.page - 1;
param.size = form2.size;
param.sort = 'addTime,desc';
param.deviceId = item.ecode;
HttpReq.equipment.getInstructionLog(param).then((res) => {
if(res){
form2.total = res.totalElements;
var formData = res.content || [],
timeKeys = {'ilTimHour':'小时','ilTimMins':'分钟','ilTimSec':''};
for(var fitem of formData){
fitem.subcode = item.subcode;
for(var key in timeKeys){
if(fitem[key]){
fitem['time'] = fitem[key];
fitem.timeUnit = timeKeys[key];
}else{
delete fitem[key]
}
};
fitem.ilAdjust = ['不启动', '启动'][fitem.ilAdjust || 0];
fitem.ilSave = ['不存储', '存储'][fitem.ilSave || 0];
fitem.ilSendSuccess = ['下发失败', '下发成功'][fitem.ilSendSuccess || 0];
};
form2.formData = formData;
};
}).catch(function(error) {
console.log('error ________________ ', error);
});
},
//图片上传
excelImport(event) {
let that = this;
let file = event.target.files[0];
let formData1 = new FormData();
formData1.append("avatar", file);
Axios({
url: process.env.VUE_APP_LOCAL_API2 + '/api/wEquipment/updateAvatar',
method: "post",
data: formData1,
}).then(
response => {
if (response.status == 200) {
this.$message.success("上传成功");
that.picFileName = response.data.avatar;
} else {
this.$message.error("上传失败");
}
},
)
.catch(error => {
console.log(error);
});
},
//项目名称展示
formatter(row){
let proName = "";
this.form.selectList.forEach(function(item){
if(row.projectId == item.id){
proName = item.name;
}
})
return proName
}
}
}
</script>
......
......@@ -4,13 +4,28 @@
<!--工具栏-->
<div class="head-container">
<!-- 搜索 -->
<label class="el-form-item-label" style="font-weight: 500;">设备识别码</label>
<el-input v-model="query.code" clearable size="small" placeholder="请输入设备识别码" style="width:180px;" @clear="clearLimit"/>
<label class="el-form-item-label" style="font-weight: 500;">车辆名称</label>
<el-input v-model="query.name" clearable size="small" placeholder="请输入车辆名称" style="width:180px;"/>
<label class="el-form-item-label" style="font-weight: 500;">所属车队</label>
<el-select v-model="query.road" placeholder="请选择所属车队" style="width:180px;">
<el-option v-for="(obj,index) in selectList" :label="obj.name" :value="obj.name" :key="index"></el-option>
</el-select>
<label class="el-form-item-label" style="font-weight: 500;">卡车类型</label>
<el-select v-model="query.carclass" placeholder="请选择卡车类型" style="width:180px;">
<el-option label="挖机" value="挖机"></el-option>
<el-option label="铲车" value="铲车"></el-option>
<el-option label="卡车" value="卡车"></el-option>
<el-option label="清扫车" value="清扫车"></el-option>
</el-select>
<el-button size="mini" type="success" icon="el-icon-search" @click="toSearch">搜索</el-button>
<el-button size="mini" icon="el-icon-refresh" @click="clearLimit">重置</el-button>
</div>
</div>
<!-- 表格 -->
<div class="panel-bottom page-row">
<h3>设备管理列表</h3>
<h3>车辆信息</h3>
<div class="ctin-box">
<div class="content-within">
<div class="content-fix">
......@@ -19,30 +34,23 @@
</div>
<div class="content">
<el-table :data="tableData" v-loading="loading" border style="width:auto" :row-class-name="tableRowClassName">
<el-table-column prop="id" label="设备ID" align="center"></el-table-column>
<el-table-column prop="code" label="设备识别码" align="center"></el-table-column>
<el-table-column prop="name" label="设备名称" align="center"></el-table-column>
<el-table-column prop="alarmWindspeed" label="风速报警阈值" align="center"></el-table-column>
<el-table-column prop="alarmTemperature" label="温度报警阈值" align="center"></el-table-column>
<el-table-column prop="alarmHumidity" label="湿度报警阈值" align="center"></el-table-column>
<el-table-column prop="alarmCo2" label="二氧化碳报警阈值" align="center"></el-table-column>
<el-table-column prop="alarmMlux" label="光照报警阈值" align="center"></el-table-column>
<el-table-column prop="alarmPh" label="酸碱度报警阈值" align="center"></el-table-column>
<el-table-column prop="alarmWaterTemperature" label="水温报警阈值" align="center"></el-table-column>
<el-table-column prop="alarmElectricalConductance" label="电导率报警阈值" align="center"></el-table-column>
<el-table-column prop="alarmWaterDepth" label="液位报警阈值" align="center"></el-table-column>
<el-table-column prop="createTime" label="设备激活时间" align="center"></el-table-column>
<el-table-column prop="addTime" label="最后采集时间" align="center"></el-table-column>
<el-table-column prop="projectId" label="所属项目" align="center" :formatter="formatter"></el-table-column>
<el-table-column label="操作" min-width="180px" align="center" fixed="right">
<el-table-column prop="name" label="车辆名称" align="center"></el-table-column>
<el-table-column prop="number" label="车牌号" align="center"></el-table-column>
<el-table-column prop="carclass" label="卡车类型" align="center"></el-table-column>
<el-table-column prop="road" label="车队名称" align="center"></el-table-column>
<el-table-column prop="model" label="车辆型号" align="center"></el-table-column>
<el-table-column prop="weight" label="运重(kg)" align="center"></el-table-column>
<el-table-column prop="status" label="车辆状态" align="center" :formatter="statusChange"></el-table-column>
<el-table-column prop="alarm" label="超速预警(km/h)" align="center"></el-table-column>
<el-table-column prop="month" label="保养周期(月)" align="center"></el-table-column>
<el-table-column prop="year" label="车辆年限" align="center"></el-table-column>
<el-table-column prop="time" label="最新一次保养时间" align="center"></el-table-column>
<!-- <el-table-column prop="time" label="最新一次保养时间" align="center" :formatter="timeChange"></el-table-column> -->
<el-table-column prop="plant" label="终端设备编号" align="center"></el-table-column>
<el-table-column label="操作" align="center" fixed="right">
<template slot-scope="scope">
<el-button size="mini" type="success" icon="el-icon-view" @click="toSeeMore(scope.row)"></el-button>
<el-button size="mini" type="primary" icon="el-icon-edit" @click="toEdit(scope.row)"></el-button>
<el-button size="mini" type="danger" icon="el-icon-delete" @click="toDelete(scope.row)"></el-button>
<!-- <div class="btn-groub2">
<el-button size="mini" type="warning" icon="el-icon-set-up" @click="toInstructionSet(scope.row)"></el-button>
<el-button size="mini" type="info" icon="el-icon-tickets" @click="toInstructionLog(scope.row)"></el-button>
</div> -->
</template>
</el-table-column>
</el-table>
......@@ -57,56 +65,54 @@
<!-- 表单渲染 -->
<el-dialog append-to-body :close-on-click-modal="true" :before-close="cancelForm" :visible.sync="form.visible" :title="form.title" width="700px">
<el-form :model="form.item" :rules="rules" ref="form1" :inline="true" size="small" label-width="150px">
<el-form-item label="选择项目" prop="projectId" >
<el-select v-model="form.item.projectId" placeholder="请选择项目" size="small">
<el-option v-for="(obj,index) in form.selectList" :label="obj.name" :value="obj.id" :key="index"></el-option>
</el-select>
</el-form-item>
<!-- <el-form-item label="设备ID" prop="id">
<el-input v-model="form.item.id" style="width:280px;" placeholder="请输入设备编号" :disabled="form.reqType==='edit'"/>
</el-form-item> -->
<el-form-item label="设备识别码" prop="code">
<el-input v-model="form.item.code" style="width:260px;" placeholder="请输入设备识别码" :disabled="form.reqType==='edit'"/>
<el-form-item label="车辆名称" prop="name">
<el-input v-model="form.item.name" style="width:280px;" placeholder="请输入车辆名称"/>
</el-form-item>
<el-form-item label="设备名称" prop="name">
<el-input v-model="form.item.name" style="width:260px;" placeholder="请输入设备名称"/>
<el-form-item label="车牌号" prop="number">
<el-input v-model="form.item.number" style="width:280px;" placeholder="请输入车牌号"/>
</el-form-item>
<el-form-item label="风速报警阈值" prop="alarmWindspeed" >
<el-input v-model="form.item.alarmWindspeed" style="width:160px;" placeholder="请输入风速报警阈值"/>
</el-form-item>
<el-form-item label="温度报警阈值" prop="alarmTemperature" >
<el-input v-model="form.item.alarmTemperature" style="width:160px;" placeholder="请输入温度报警阈值"/>
<el-form-item label="卡车类型" prop="carclass">
<el-select v-model="form.item.carclass" placeholder="请选择卡车类型" style="width:280px;">
<el-option label="挖机" value="挖机"></el-option>
<el-option label="铲车" value="铲车"></el-option>
<el-option label="卡车" value="卡车"></el-option>
<el-option label="清扫车" value="清扫车"></el-option>
</el-select>
</el-form-item>
<el-form-item label="湿度报警阈值" prop="alarmHumidity" >
<el-input v-model="form.item.alarmHumidity" style="width:160px;" placeholder="请输入湿度报警阈值"/>
<el-form-item label="车队名称" prop="road">
<el-select v-model="form.item.road" placeholder="请选择所属车队名称" style="width:280px;">
<el-option v-for="(obj,index) in selectList" :label="obj.name" :value="obj.name" :key="index"></el-option>
</el-select>
</el-form-item>
<el-form-item label="二氧化碳报警阈值" prop="alarmCo2" >
<el-input v-model="form.item.alarmCo2" style="width:160px;" placeholder="请输入二氧化碳报警阈值"/>
<el-form-item label="车辆型号" prop="model">
<el-input v-model="form.item.model" style="width:280px;" placeholder="请输入车辆型号"/>
</el-form-item>
<el-form-item label="光照报警阈值" prop="alarmMlux" >
<el-input v-model="form.item.alarmMlux" style="width:160px;" placeholder="请输入光照报警阈值"/>
<el-form-item label="运重(kg)" prop="weight">
<el-input v-model="form.item.weight" style="width:280px;" placeholder="请输入运重(kg)"/>
</el-form-item>
<el-form-item label="酸碱度报警阈值" prop="alarmPh" >
<el-input v-model="form.item.alarmPh" style="width:160px;" placeholder="请输入酸碱度报警阈值"/>
<el-form-item label="车辆状态" prop="status">
<el-select v-model="form.item.status" placeholder="请选择车辆状态" style="width:280px;">
<el-option label="正常" value="0"></el-option>
<el-option label="故障" value="1"></el-option>
<el-option label="停用" value="2"></el-option>
</el-select>
</el-form-item>
<el-form-item label="水温报警阈值" prop="alarmWaterTemperature" >
<el-input v-model="form.item.alarmWaterTemperature" style="width:160px;" placeholder="请输入水温报警阈值"/>
<el-form-item label="超速预警(km/h)" prop="alarm">
<el-input v-model="form.item.alarm" style="width:280px;" placeholder="请输入超速预警(km/h)"/>
</el-form-item>
<el-form-item label="电导率报警阈值" prop="alarmElectricalConductance" >
<el-input v-model="form.item.alarmElectricalConductance" style="width:160px;" placeholder="请输入电导率报警阈值"/>
<el-form-item label="保养周期(月)" prop="month">
<el-input v-model="form.item.month" style="width:280px;" placeholder="请输入保养周期(月)"/>
</el-form-item>
<el-form-item label="液位报警阈值" prop="alarmWaterDepth" >
<el-input v-model="form.item.alarmWaterDepth" style="width:160px;" placeholder="请输入液位报警阈值"/>
<el-form-item label="车辆年限" prop="year">
<el-input v-model="form.item.year" style="width:280px;" placeholder="请输入车辆年限"/>
</el-form-item>
<el-form-item label="上传设备位置" prop="position">
<el-input v-model="picFileName" style="width:160px;" placeholder="请上传设备位置" disabled />
<input type="file" name="image" @change="excelImport($event)" />
<el-form-item label="最新一次保养时间" prop="time">
<el-input v-model="form.item.time" style="width:280px;" placeholder="请输入最新一次保养时间"/>
<!-- <el-date-picker v-model="form.item.time" type="date" placeholder="选择日期"></el-date-picker> -->
</el-form-item>
<div style="margin:0px 0px 10px 55px;font-size:16px;font-weight:bold;">摄像头参数配置</div>
<el-form-item label="摄像头ID" prop="camera">
<el-input v-model="form.item.camera" style="width:160px;" placeholder="请输入摄像头ID"/>
<el-form-item label="终端设备编号" prop="plant">
<el-input v-model="form.item.plant" style="width:280px;" placeholder="请输入终端设备编号"/>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="text" @click="cancelForm">取消</el-button>
......@@ -114,119 +120,15 @@
</div>
</el-dialog>
<!-- 查看更多 -->
<el-dialog title="查看设备" :visible.sync="form.seeMoreDialog" width="800px">
<el-form :model="seeMoreData" style="margin-top:20px;">
<el-form-item label="摄像头位置图片" label-width="150px">
<el-image :src="seeMoreImgUrl" style="width:300px;"></el-image>
</el-form-item>
<el-form-item label="摄像头图像" label-width="150px">
<div id="video-container" style="width:550px;height:350px"></div>
</el-form-item>
<el-form-item label="摄像头ID" label-width="150px">
<el-input v-model="seeMoreData.camera" style="width:200px"></el-input>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="form.seeMoreDialog = false">关闭</el-button>
</div>
</el-dialog>
<!-- 历史图表 -->
<el-dialog class="ecahrt1-dialog" append-to-body :close-on-click-modal="false" :before-close="cancelForm2" :visible.sync="form.historyDialog">
<el-form :rules="rules" ref="form1" :inline="true" size="small" label-width="80px">
<!-- <el-form-item prop="eprogramid" >
<el-select v-model="form.item2.value" placeholder="请选择月份">
<el-option v-for="obj in form.monthSelectList" :label="obj.name" :value="obj.value"></el-option>
</el-select>
</el-form-item> -->
<el-form-item prop="eprogramid" >
<date-range-picker v-model="query.timeSpace" class="date-item" />
</el-form-item>
<el-form-item >
<el-button type="primary" @click="findHistory">查询</el-button>
</el-form-item>
<el-form-item prop="content" style="display:block;" >
<div class="form-body">
<div id="ecahrtA"></div>
</div>
</el-form-item>
</el-form>
</el-dialog>
<!-- 指令下发 -->
<el-dialog append-to-body :close-on-click-modal="false" :before-close="cancelForm3" :visible.sync="form2.visible" :title="form2.title" width="600px">
<el-form :model="form2.item" :rules="rules" ref="form2" :inline="true" size="small" label-width="100px">
<el-form-item label="设备ID" prop="ecode">
<el-input v-model="form2.item.ecode" style="width:280px;" placeholder="请输入设备编号" :disabled="form2.reqType==='edit'"/>
</el-form-item>
<el-form-item label="设备识别码" prop="subcode">
<el-input v-model="form2.item.subcode" style="width:260px;" placeholder="请输入设备识别码" :disabled="form2.reqType==='edit'"/>
</el-form-item>
<el-form-item label="是否启动校正" prop="ilAdjust" style="width:240px;">
<el-select v-model="form2.item.ilAdjust" placeholder="请选择" size="small" style="width:120px;">
<el-option v-for="obj in form2.adjustList" :label="obj.name" :key="obj.value" :value="obj.value"></el-option>
</el-select>
</el-form-item>
<el-form-item label="是否存储裂缝" prop="ilSave" style="width:240px;">
<el-select v-model="form2.item.ilSave" placeholder="请选择" size="small" style="width:120px;">
<el-option v-for="(obj,index) in form2.saveList" :label="obj.name" :value="obj.value" :key="index"></el-option>
</el-select>
</el-form-item>
<el-form-item label="裂缝阈值" prop="ilThreshed" >
<el-input v-model="form2.item.ilThreshed" style="width:160px;" placeholder="请输入裂缝阈值"/>
<span style="color:#aaa;">1~255</span>
</el-form-item>
<el-form-item label="唤醒周期" prop="timekey" >
<el-select v-model="form2.item.timekey" placeholder="请选择时间" size="small" style="width:120px;">
<el-option v-for="(obj,index) in form2.timeList" :label="obj.name" :value="obj.value" :key="index"></el-option>
</el-select>
<el-input v-model="form2.item.time" style="width:160px;" placeholder="请输入时长"/>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="text" @click="cancelForm3">取消</el-button>
<el-button :loading="form2.status.cu === 2" type="primary" @click="reqSetInstruction('form2', form2.item)">确认</el-button>
</div>
</el-dialog>
<!-- 指令日志 -->
<el-dialog append-to-body :close-on-click-modal="false" :before-close="cancelForm4" :visible.sync="form2.logVisible" :title="form2.title" width="65%">
<div class="content">
<el-table :data="form2.formData" v-loading="loading" border style="width:auto" :row-class-name="tableRowClassName">
<el-table-column prop="subcode" label="设备识别码" min-width="135px"></el-table-column>
<el-table-column prop="ilThreshed" label="裂缝阈值"></el-table-column>
<el-table-column prop="ilAdjust" label="校正功能"></el-table-column>
<el-table-column prop="ilSave" label="存储裂缝" ></el-table-column>
<el-table-column prop="ilSendTime" label="唤醒时间">
<template slot-scope="scope">
{{scope.row.time + '('+scope.row.timeUnit+')'}}
</template>
</el-table-column>
<el-table-column prop="ilSendSuccess" label="下发状态" ></el-table-column>
<el-table-column prop="ilSendTime" label="下发时间" min-width="145px"></el-table-column>
</el-table>
<!--分页组件-->
<el-pagination :total="form2.total" :current-page="form2.page" style="margin-top:8px;" layout="total, prev, pager, next, sizes" @size-change="sizeChange2" @current-change="pageChange2" />
</div>
</el-dialog>
</div>
</template>
<script>
import echarts from 'echarts';
import { Tools, HttpReq, Dates} from '@/assets/js/common.js';
import DateRangePicker from '@/components/DateRangePicker';
import cuAmap from '@/components/AMap';
import Axios from 'axios'
import EZUIKit from "ezuikit-js";
export default {
name: 'carInformation',
components: {
DateRangePicker, cuAmap
},
name: 'CarInformation',
components: {},
data() {
return {
loading: false,
......@@ -234,77 +136,19 @@ export default {
size: 10,
total: 0,
query:{},
picFileName:'',
tableData: [],
seeMoreData:{},
seeMoreImgUrl:"",
selectList:[],
form: {
title:'添加设备', visible:false, reqType:'add', historyDialog:false,seeMoreDialog:false,
title:'新增车辆',
visible:false,
reqType:'add',
status:{cu:0},
selectList:[],
item:{},
monthSelectList:[
{name:'一月', value:'01'},
{name:'二月', value:'02'},
{name:'三月', value:'03'},
{name:'四月', value:'04'},
{name:'五月', value:'05'},
{name:'六月', value:'06'},
{name:'七月', value:'07'},
{name:'八月', value:'08'},
{name:'九月', value:'09'},
{name:'十月', value:'10'},
{name:'十一月', value:'11'},
{name:'十二月', value:'12'},
],
item2:{
value:''
},
},
rules: {
projectId: [
{required: true, message: '请选择项目', trigger: 'blur' }
],
id: [
{required: true, message: '请输入设备ID', trigger: 'blur' }
],
code: [
{required: true, message: '请输入设备识别码', trigger: 'blur' }
],
name: [
{required: true, message: '请输入设备名称', trigger: 'blur' }
],
},
form2:{
title:'指令下发', visible:false, logDialog:false, logVisible:false,
query:{},
page: 1,
size: 10,
total: 0,
status:{cu:0},
item:{
ecode: "",
ename:'',
ilAdjust:0,
ilSave:0,
time:'',
ilThreshed:0,
timekey:'ilTimHour',
},
adjustList:[
{name:'启动', value:1},
{name:'不启动', value:0},
],
saveList:[
{name:'存储', value:1},
{name:'不存储', value:0},
],
timeList:[
{name:'', value:'ilTimHour'},
{name:'', value:'ilTimMins'},
{name:'', value:'ilTimSec'},
number: [
{required: true, message: '请输入车牌号', trigger: 'blur' }
],
formData:[],
},
}
},
......@@ -316,24 +160,26 @@ export default {
},
methods: {
loadData() {
var that = this;
var sort = 'addTime,desc';
var sort = 'id,desc';
var param = this.query;
param.page = this.page - 1;
param.size = this.size;
param.sort = sort;
//请求项目列表
this.reqProjectsSimple().then((list) => {
this.form.selectList = list;
});
this.$nextTick(()=>{
HttpReq.plantFactory.getDeviceManageList(param).then((res) => {
//console.log(res);
//获取车辆信息
HttpReq.truckDispatching.carInformationQuery(param).then((res) => {
if(res.code == 200){
this.loading = false;
this.tableData = res.content;
this.total = res.totalElements;
this.tableData = res.data.content;
this.total = res.data.totalElements;
}
})
//获取车队
HttpReq.truckDispatching.carFleetQuery().then((res) => {
if(res.code == 200){
this.selectList = res.data.content;
}
})
})
......@@ -348,45 +194,34 @@ export default {
},
// 点击搜索
toSearch() {
this.page = 1
this.loadData()
this.page = 1;
this.loadData();
},
clearLimit(){ // 清除限制
// 重置搜索
clearLimit(){
this.query = {};
this.loadData()
},
cancelForm(a, b, c){
this.form.visible = false;
},
cancelForm2(){
this.form.historyDialog = false;
},
toAdd() {
// 请除表单验证
this.$refs['form1'] && this.$refs['form1'].clearValidate();
this.form.title = '添加设备';
this.form.title = '新增车辆';
this.form.status.cu = 0;
this.form.visible = true;
this.form.reqType = 'add';
this.form.item = {};
this.picFileName = '';
//请求项目列表
this.reqProjectsSimple().then((list) => {
this.form.selectList = list
});
},
toEdit(item) {
// 请除表单验证
this.$refs['form1'] && this.$refs['form1'].clearValidate();
this.form.title = '编辑设备';
this.form.title = '修改车辆';
this.form.status.cu = 0;
this.form.visible = true;
this.form.item = item;
this.form.item = {...item};
this.form.reqType = 'edit';
this.picFileName = this.form.item.position;
//请求项目列表
this.reqProjectsSimple().then((list) => {
this.form.selectList = list
});
},
toDelete(item) {
var id = item.id;
......@@ -396,103 +231,7 @@ export default {
type: 'warning'
}).then((e) => {
this.reqRemoveProject([id])
}).catch((e) => {
})
},
//查看图片以及其他信息
toSeeMore(row){
//console.log(row);
this.seeMoreData = row;
this.seeMoreImgUrl = process.env.VUE_APP_LOCAL_API2 + "/avatar/" + row.position;
this.form.seeMoreDialog = true;
this.$nextTick(()=>{
let videoContainer = document.querySelector('#video-container');
videoContainer.innerHTML = '';
var player = new EZUIKit.EZUIKitPlayer({
autoplay: true,
id: 'video-container',
accessToken:'at.4qo66bb35a19h07a0d9pbmtj5v4g0o78-4jmzdu3k24-0866je6-qkz1xuwmf',
url: 'ezopen://open.ys7.com/J16440511/1.live',
template: "simple", // simple - 极简版;standard-标准版;security - 安防版(预览回放);voice-语音版;
width: 530,
height: 320
});
})
},
toHistoryLog(item){
this.form.historyDialog = true;
this.form.item2.value = Dates.format('MM');
this.form.item2.code = item.ecode;
this.$nextTick(() => {
var ecahrtEl = document.getElementById("ecahrtA");
this.ecahrtA = this.ecahrtA || this.createPanelEcharts(ecahrtEl);
this.reqHistoryList(this.form.item2);
});
},
cancelForm3(a, b, c){
this.form2.visible = false;
},
cancelForm4(a, b, c){
this.form2.logVisible = false;
},
// 指令下发
toInstructionSet(item){
var form2 = this.form2;
// 请除表单验证
//this.$refs['form1'] && this.$refs['form1'].clearValidate();
form2.title = '指令下发';
form2.status.cu = 0;
form2.visible = true;
form2.reqType = 'edit';
form2.item = {
ecode:item.ecode,
subcode:item.subcode,
ilAdjust:form2.item.ilAdjust,
ilSave:form2.item.ilSave,
timekey:form2.item.timekey,
time:'',
};
},
// 指令日志
toInstructionLog(item){
var form2 = this.form2;
// 请除表单验证
//this.$refs['form1'] && this.$refs['form1'].clearValidate();
form2.title = '下发日志';
form2.logVisible = true;
form2.item = item;
var param = form2.query;
param.page = form2.page - 1;
param.size = form2.size;
param.sort = 'addTime,desc';
param.deviceId = item.ecode;
HttpReq.equipment.getInstructionLog(param).then((res) => {
if(res){
form2.total = res.totalElements;
var formData = res.content || [],
timeKeys = {'ilTimHour':'小时','ilTimMins':'分钟','ilTimSec':''};
for(var fitem of formData){
fitem.subcode = item.subcode;
for(var key in timeKeys){
if(fitem[key] || fitem[key] === 0){
fitem['time'] = fitem[key];
fitem.timeUnit = timeKeys[key];
}else{
delete fitem[key]
}
};
fitem.ilAdjust = ['不启动', '启动'][fitem.ilAdjust || 0];
fitem.ilSave = ['不存储', '存储'][fitem.ilSave || 0];
fitem.ilSendSuccess = ['下发失败', '下发成功'][fitem.ilSendSuccess || 0];
};
form2.formData = formData;
};
}).catch(function(error) {
console.log('error ________________ ', error);
});
}).catch((e) => {})
},
pageChange(e) {
this.page = e
......@@ -503,15 +242,6 @@ export default {
this.size = e
this.loadData()
},
pageChange2(e) {
this.form2.page = e
this.reqInstructionLog(this.form2.item)
},
sizeChange2(e) {
this.form2.page = 1;
this.form2.size = e;
this.reqInstructionLog(this.form2.item);
},
submitForm(validateName, item){
if(!this.form.status.cu){
this.form.status.cu = 2;
......@@ -528,36 +258,21 @@ export default {
});
};
},
findHistory(){
this.reqHistoryList(this.form.item2);
},
//请求项目列表
reqProjectsSimple(){
return HttpReq.project.getProject().then((res) => {
if(res.code == 200){
return res.data.content;
}else{
return []
}
})
},
//添加设备
//新增车辆
reqAddItem(form, item){
let lastData = item;
lastData.position = this.picFileName;
HttpReq.plantFactory.addDeviceManageList(lastData).then((res) => {
let lastData = {...item};
HttpReq.truckDispatching.carInformationAdd(lastData).then((res) => {
form.visible = false;
if(res == 1){
if(res.code == 200){
this.$notify({
title: '项目添加成功!',
title: '车辆新增成功!',
type: 'success',
duration: 2500
});
this.loadData()
}else{
this.$notify({
title: res.head.message,
title: res.msg,
type: 'error',
duration: 2500
})
......@@ -566,36 +281,35 @@ export default {
form.status.cu = 0
});
},
//修改设备
//修改车辆
reqUpdateItem(form, item){
let lastData = item;
lastData.position = this.picFileName;
HttpReq.plantFactory.upDateDeviceManageList(lastData).then((res) => {
let lastData = {...item};
HttpReq.truckDispatching.carInformationUpdate(lastData).then((res) => {
form.visible = false;
if(res.status == 400){
this.$notify({
title: res.head.message,
type: 'error',
duration: 2500
})
}else{
if(res.code == 200){
this.$notify({
title: '修改成功!',
title: '车辆修改成功!',
type: 'success',
duration: 2500
});
this.loadData()
}else{
this.$notify({
title: res.msg,
type: 'error',
duration: 2500
})
}
}).catch(function(error) {
form.status.cu = 0
});
},
//删除设备
//删除车辆
reqRemoveProject(item){
HttpReq.plantFactory.removeDeviceManageList(item).then((res) => {
HttpReq.truckDispatching.carInformationDel(item).then((res) => {
if(res.status == 400){
this.$notify({
title: res.head.message,
title: res.msg,
type: 'error',
duration: 2500
})
......@@ -609,228 +323,30 @@ export default {
this.loadData();
})
},
reqHistoryList(item){
var timeSpace = this.query.timeSpace;
var startTime = timeSpace ? timeSpace[0].split(' ')[0] : '';
var endTime = timeSpace ? timeSpace[1].split(' ')[0] : '';
HttpReq.historys.getItemBycode({codes:item.code, startTime:startTime, endTime:endTime}).then((res) => {
if(res.head.code === '0000'){
var body = res.body || {};
var list = body.list || [];
var xAxisData = [];
var helement = [];
var htemperature = [];
var hlenght1 = [], hlenght2 = [], hlenght3 = [];
for(var item of list){
xAxisData.push(item.createTime);
helement.push(item.helement);
htemperature.push(item.htemperature);
hlenght1.push(item.hlenght1);
hlenght2.push(item.hlenght2);
hlenght3.push(item.hlenght3);
};
this.ecahrtA.setData({
xAxis: [
{
type: 'category',
data: xAxisData,
},
],
series: [
{
name: '电压',
data: helement,
},
{
name: '温度',
data: htemperature,
},
{
name: '裂缝1',
data: hlenght1,
},
{
name: '裂缝2',
data: hlenght2,
},
{
name: '裂缝3',
data: hlenght3,
//车辆状态转换
statusChange(row){
return row.status == '0' ? '正常' : row.status == '1' ? '故障' : row.status == '2' ? '停用' : '' ;
},
//保养时间转换
timeChange(row){
return this.currentTime(row.time);
},
currentTime(time){
var date = new Date(time);
var year = date.getFullYear(); //年 ,从 Date 对象以四位数字返回年份
var month = date.getMonth() + 1; //月 ,从 Date 对象返回月份 (0 ~ 11) ,date.getMonth()比实际月份少 1 个月
var day = date.getDate(); //日 ,从 Date 对象返回一个月中的某一天 (1 ~ 31)
//修改月份格式
if (month >= 1 && month <= 9) {
month = "0" + month;
}
]
})
};
}).catch(function(error) {
console.log('catch __ ', error);
})
},
createPanelEcharts(el){
var myChart = echarts.init(el),
lineColor = 'green';
var option = {
title: {
text: '',
subtext: '设备值'
},
tooltip: {
trigger: 'axis'
},
legend: {
data: ['电压', '温度', '裂缝1', '裂缝2', '裂缝3'],
textStyle: {
color: "#000"
},
},
textStyle: {
color: "#333"
},
calculable: true,
xAxis: [
{
type: 'category',
data: [],
}
],
yAxis: [
{
type: 'value',
}
],
grid:{
top:40,
right:10,
bottom:20,
left:45,
},
series: [
{
name: '电压',
type: 'line',
data: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
//itemStyle: {normal: {areaStyle: {type: 'default', color:'#00e5ff'}, color:'#00e5ff'}, color:'green'},
},
{
name: '温度',
type: 'line',
data: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
},
{
name: '裂缝1',
type: 'line',
data: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
//itemStyle: {normal: {areaStyle: {type:'default', color:'red'}, color:'#1849fe'}, color:'red'},
},
{
name: '裂缝2',
type: 'line',
data: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
},
{
name: '裂缝3',
type: 'line',
data: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
}
]
};
myChart.setOption(option);
var setData = function(option){
myChart.hideLoading();
myChart.setOption(option)
};
return {setData:setData, myChart:myChart}
},
reqSetInstruction(form, item){
var param = {
deviceId:item.ecode,
ilAdjust:item.ilAdjust,
ilSave:item.ilSave,
ilThreshed:item.ilThreshed || 0,
[item.timekey]:item.time || 0,
};
HttpReq.equipment.setInstruction(param).then((res) => {
this.form2.visible = false;
this.$notify({
title: '修改成功!',
type: 'success',
duration: 2500
});
this.loadData()
}).catch(function(error) {
this.form2.status.cu = 0;
this.$notify({
title: error,
type: 'error',
duration: 2500
})
});
},
reqInstructionLog(item){
var form2 = this.form2;
var param = form2.query;
param.page = form2.page - 1;
param.size = form2.size;
param.sort = 'addTime,desc';
param.deviceId = item.ecode;
HttpReq.equipment.getInstructionLog(param).then((res) => {
if(res){
form2.total = res.totalElements;
var formData = res.content || [],
timeKeys = {'ilTimHour':'小时','ilTimMins':'分钟','ilTimSec':''};
for(var fitem of formData){
fitem.subcode = item.subcode;
for(var key in timeKeys){
if(fitem[key]){
fitem['time'] = fitem[key];
fitem.timeUnit = timeKeys[key];
}else{
delete fitem[key]
//修改日期格式
if (day >= 0 && day <= 9) {
day = "0" + day;
}
};
fitem.ilAdjust = ['不启动', '启动'][fitem.ilAdjust || 0];
fitem.ilSave = ['不存储', '存储'][fitem.ilSave || 0];
fitem.ilSendSuccess = ['下发失败', '下发成功'][fitem.ilSendSuccess || 0];
};
form2.formData = formData;
};
}).catch(function(error) {
console.log('error ________________ ', error);
});
},
//图片上传
excelImport(event) {
let that = this;
let file = event.target.files[0];
let formData1 = new FormData();
formData1.append("avatar", file);
Axios({
url: process.env.VUE_APP_LOCAL_API2 + '/api/wEquipment/updateAvatar',
method: "post",
data: formData1,
}).then(
response => {
if (response.status == 200) {
this.$message.success("上传成功");
that.picFileName = response.data.avatar;
} else {
this.$message.error("上传失败");
}
},
)
.catch(error => {
console.log(error);
});
},
//项目名称展示
formatter(row){
let proName = "";
this.form.selectList.forEach(function(item){
if(row.projectId == item.id){
proName = item.name;
}
})
return proName
//获取当前系统时间 格式(yyyy-mm-dd hh:mm:ss)
let currentFormatDate = year + "-" + month + "-" + day;
return currentFormatDate;
}
}
}
......
<template>
<div class="common-page device-manage">
<div class="option page-row">
<!--工具栏-->
<div class="head-container">
<!-- 搜索 -->
<label class="el-form-item-label" style="font-weight: 500;">设备识别码</label>
<el-input v-model="query.code" clearable size="small" placeholder="请输入设备识别码" style="width:180px;" @clear="clearLimit"/>
<el-button size="mini" type="success" icon="el-icon-search" @click="toSearch">搜索</el-button>
</div>
</div>
<!-- 表格 -->
<div class="panel-bottom page-row">
<h3>设备管理列表</h3>
<h3>车辆型号管理</h3>
<div class="ctin-box">
<div class="content-within">
<div class="content-fix">
......@@ -19,30 +12,16 @@
</div>
<div class="content">
<el-table :data="tableData" v-loading="loading" border style="width:auto" :row-class-name="tableRowClassName">
<el-table-column prop="id" label="设备ID" align="center"></el-table-column>
<el-table-column prop="code" label="设备识别码" align="center"></el-table-column>
<el-table-column prop="name" label="设备名称" align="center"></el-table-column>
<el-table-column prop="alarmWindspeed" label="风速报警阈值" align="center"></el-table-column>
<el-table-column prop="alarmTemperature" label="温度报警阈值" align="center"></el-table-column>
<el-table-column prop="alarmHumidity" label="湿度报警阈值" align="center"></el-table-column>
<el-table-column prop="alarmCo2" label="二氧化碳报警阈值" align="center"></el-table-column>
<el-table-column prop="alarmMlux" label="光照报警阈值" align="center"></el-table-column>
<el-table-column prop="alarmPh" label="酸碱度报警阈值" align="center"></el-table-column>
<el-table-column prop="alarmWaterTemperature" label="水温报警阈值" align="center"></el-table-column>
<el-table-column prop="alarmElectricalConductance" label="电导率报警阈值" align="center"></el-table-column>
<el-table-column prop="alarmWaterDepth" label="液位报警阈值" align="center"></el-table-column>
<el-table-column prop="createTime" label="设备激活时间" align="center"></el-table-column>
<el-table-column prop="addTime" label="最后采集时间" align="center"></el-table-column>
<el-table-column prop="projectId" label="所属项目" align="center" :formatter="formatter"></el-table-column>
<el-table-column label="操作" min-width="180px" align="center" fixed="right">
<el-table-column prop="id" label="序号" align="center"></el-table-column>
<el-table-column prop="model" label="车辆型号" align="center"></el-table-column>
<el-table-column prop="carclass" label="所属车辆类型" align="center"></el-table-column>
<el-table-column prop="weight" label="运重(kg)" align="center"></el-table-column>
<el-table-column prop="alarm" label="超速预警" align="center"></el-table-column>
<el-table-column prop="createTime" label="日期" align="center"></el-table-column>
<el-table-column label="操作" align="center" fixed="right">
<template slot-scope="scope">
<el-button size="mini" type="success" icon="el-icon-view" @click="toSeeMore(scope.row)"></el-button>
<el-button size="mini" type="primary" icon="el-icon-edit" @click="toEdit(scope.row)"></el-button>
<el-button size="mini" type="danger" icon="el-icon-delete" @click="toDelete(scope.row)"></el-button>
<!-- <div class="btn-groub2">
<el-button size="mini" type="warning" icon="el-icon-set-up" @click="toInstructionSet(scope.row)"></el-button>
<el-button size="mini" type="info" icon="el-icon-tickets" @click="toInstructionLog(scope.row)"></el-button>
</div> -->
</template>
</el-table-column>
</el-table>
......@@ -57,56 +36,23 @@
<!-- 表单渲染 -->
<el-dialog append-to-body :close-on-click-modal="true" :before-close="cancelForm" :visible.sync="form.visible" :title="form.title" width="700px">
<el-form :model="form.item" :rules="rules" ref="form1" :inline="true" size="small" label-width="150px">
<el-form-item label="选择项目" prop="projectId" >
<el-select v-model="form.item.projectId" placeholder="请选择项目" size="small">
<el-option v-for="(obj,index) in form.selectList" :label="obj.name" :value="obj.id" :key="index"></el-option>
</el-select>
</el-form-item>
<!-- <el-form-item label="设备ID" prop="id">
<el-input v-model="form.item.id" style="width:280px;" placeholder="请输入设备编号" :disabled="form.reqType==='edit'"/>
</el-form-item> -->
<el-form-item label="设备识别码" prop="code">
<el-input v-model="form.item.code" style="width:260px;" placeholder="请输入设备识别码" :disabled="form.reqType==='edit'"/>
</el-form-item>
<el-form-item label="设备名称" prop="name">
<el-input v-model="form.item.name" style="width:260px;" placeholder="请输入设备名称"/>
</el-form-item>
<el-form-item label="风速报警阈值" prop="alarmWindspeed" >
<el-input v-model="form.item.alarmWindspeed" style="width:160px;" placeholder="请输入风速报警阈值"/>
</el-form-item>
<el-form-item label="温度报警阈值" prop="alarmTemperature" >
<el-input v-model="form.item.alarmTemperature" style="width:160px;" placeholder="请输入温度报警阈值"/>
</el-form-item>
<el-form-item label="湿度报警阈值" prop="alarmHumidity" >
<el-input v-model="form.item.alarmHumidity" style="width:160px;" placeholder="请输入湿度报警阈值"/>
</el-form-item>
<el-form-item label="二氧化碳报警阈值" prop="alarmCo2" >
<el-input v-model="form.item.alarmCo2" style="width:160px;" placeholder="请输入二氧化碳报警阈值"/>
</el-form-item>
<el-form-item label="光照报警阈值" prop="alarmMlux" >
<el-input v-model="form.item.alarmMlux" style="width:160px;" placeholder="请输入光照报警阈值"/>
</el-form-item>
<el-form-item label="酸碱度报警阈值" prop="alarmPh" >
<el-input v-model="form.item.alarmPh" style="width:160px;" placeholder="请输入酸碱度报警阈值"/>
<el-form-item label="车辆型号" prop="model">
<el-input v-model="form.item.model" style="width:280px;" placeholder="请输入车辆型号"/>
</el-form-item>
<el-form-item label="水温报警阈值" prop="alarmWaterTemperature" >
<el-input v-model="form.item.alarmWaterTemperature" style="width:160px;" placeholder="请输入水温报警阈值"/>
</el-form-item>
<el-form-item label="电导率报警阈值" prop="alarmElectricalConductance" >
<el-input v-model="form.item.alarmElectricalConductance" style="width:160px;" placeholder="请输入电导率报警阈值"/>
</el-form-item>
<el-form-item label="液位报警阈值" prop="alarmWaterDepth" >
<el-input v-model="form.item.alarmWaterDepth" style="width:160px;" placeholder="请输入液位报警阈值"/>
<el-form-item label="所属车辆类型">
<el-select v-model="form.item.carclass" placeholder="请选择所属车辆类型" style="width:280px;">
<el-option label="挖机" value="挖机"></el-option>
<el-option label="铲车" value="铲车"></el-option>
<el-option label="卡车" value="卡车"></el-option>
<el-option label="清扫车" value="清扫车"></el-option>
</el-select>
</el-form-item>
<el-form-item label="上传设备位置" prop="position">
<el-input v-model="picFileName" style="width:160px;" placeholder="请上传设备位置" disabled />
<input type="file" name="image" @change="excelImport($event)" />
<el-form-item label="运重(kg)" prop="weight">
<el-input v-model="form.item.weight" style="width:280px;" placeholder="请输入运重(kg)"/>
</el-form-item>
<div style="margin:0px 0px 10px 55px;font-size:16px;font-weight:bold;">摄像头参数配置</div>
<el-form-item label="摄像头ID" prop="camera">
<el-input v-model="form.item.camera" style="width:160px;" placeholder="请输入摄像头ID"/>
<el-form-item label="超速预警" prop="alarm">
<el-input v-model="form.item.alarm" style="width:280px;" placeholder="请输入超速预警"/>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="text" @click="cancelForm">取消</el-button>
......@@ -114,119 +60,15 @@
</div>
</el-dialog>
<!-- 查看更多 -->
<el-dialog title="查看设备" :visible.sync="form.seeMoreDialog" width="800px">
<el-form :model="seeMoreData" style="margin-top:20px;">
<el-form-item label="摄像头位置图片" label-width="150px">
<el-image :src="seeMoreImgUrl" style="width:300px;"></el-image>
</el-form-item>
<el-form-item label="摄像头图像" label-width="150px">
<div id="video-container" style="width:550px;height:350px"></div>
</el-form-item>
<el-form-item label="摄像头ID" label-width="150px">
<el-input v-model="seeMoreData.camera" style="width:200px"></el-input>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="form.seeMoreDialog = false">关闭</el-button>
</div>
</el-dialog>
<!-- 历史图表 -->
<el-dialog class="ecahrt1-dialog" append-to-body :close-on-click-modal="false" :before-close="cancelForm2" :visible.sync="form.historyDialog">
<el-form :rules="rules" ref="form1" :inline="true" size="small" label-width="80px">
<!-- <el-form-item prop="eprogramid" >
<el-select v-model="form.item2.value" placeholder="请选择月份">
<el-option v-for="obj in form.monthSelectList" :label="obj.name" :value="obj.value"></el-option>
</el-select>
</el-form-item> -->
<el-form-item prop="eprogramid" >
<date-range-picker v-model="query.timeSpace" class="date-item" />
</el-form-item>
<el-form-item >
<el-button type="primary" @click="findHistory">查询</el-button>
</el-form-item>
<el-form-item prop="content" style="display:block;" >
<div class="form-body">
<div id="ecahrtA"></div>
</div>
</el-form-item>
</el-form>
</el-dialog>
<!-- 指令下发 -->
<el-dialog append-to-body :close-on-click-modal="false" :before-close="cancelForm3" :visible.sync="form2.visible" :title="form2.title" width="600px">
<el-form :model="form2.item" :rules="rules" ref="form2" :inline="true" size="small" label-width="100px">
<el-form-item label="设备ID" prop="ecode">
<el-input v-model="form2.item.ecode" style="width:280px;" placeholder="请输入设备编号" :disabled="form2.reqType==='edit'"/>
</el-form-item>
<el-form-item label="设备识别码" prop="subcode">
<el-input v-model="form2.item.subcode" style="width:260px;" placeholder="请输入设备识别码" :disabled="form2.reqType==='edit'"/>
</el-form-item>
<el-form-item label="是否启动校正" prop="ilAdjust" style="width:240px;">
<el-select v-model="form2.item.ilAdjust" placeholder="请选择" size="small" style="width:120px;">
<el-option v-for="obj in form2.adjustList" :label="obj.name" :key="obj.value" :value="obj.value"></el-option>
</el-select>
</el-form-item>
<el-form-item label="是否存储裂缝" prop="ilSave" style="width:240px;">
<el-select v-model="form2.item.ilSave" placeholder="请选择" size="small" style="width:120px;">
<el-option v-for="(obj,index) in form2.saveList" :label="obj.name" :value="obj.value" :key="index"></el-option>
</el-select>
</el-form-item>
<el-form-item label="裂缝阈值" prop="ilThreshed" >
<el-input v-model="form2.item.ilThreshed" style="width:160px;" placeholder="请输入裂缝阈值"/>
<span style="color:#aaa;">1~255</span>
</el-form-item>
<el-form-item label="唤醒周期" prop="timekey" >
<el-select v-model="form2.item.timekey" placeholder="请选择时间" size="small" style="width:120px;">
<el-option v-for="(obj,index) in form2.timeList" :label="obj.name" :value="obj.value" :key="index"></el-option>
</el-select>
<el-input v-model="form2.item.time" style="width:160px;" placeholder="请输入时长"/>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="text" @click="cancelForm3">取消</el-button>
<el-button :loading="form2.status.cu === 2" type="primary" @click="reqSetInstruction('form2', form2.item)">确认</el-button>
</div>
</el-dialog>
<!-- 指令日志 -->
<el-dialog append-to-body :close-on-click-modal="false" :before-close="cancelForm4" :visible.sync="form2.logVisible" :title="form2.title" width="65%">
<div class="content">
<el-table :data="form2.formData" v-loading="loading" border style="width:auto" :row-class-name="tableRowClassName">
<el-table-column prop="subcode" label="设备识别码" min-width="135px"></el-table-column>
<el-table-column prop="ilThreshed" label="裂缝阈值"></el-table-column>
<el-table-column prop="ilAdjust" label="校正功能"></el-table-column>
<el-table-column prop="ilSave" label="存储裂缝" ></el-table-column>
<el-table-column prop="ilSendTime" label="唤醒时间">
<template slot-scope="scope">
{{scope.row.time + '('+scope.row.timeUnit+')'}}
</template>
</el-table-column>
<el-table-column prop="ilSendSuccess" label="下发状态" ></el-table-column>
<el-table-column prop="ilSendTime" label="下发时间" min-width="145px"></el-table-column>
</el-table>
<!--分页组件-->
<el-pagination :total="form2.total" :current-page="form2.page" style="margin-top:8px;" layout="total, prev, pager, next, sizes" @size-change="sizeChange2" @current-change="pageChange2" />
</div>
</el-dialog>
</div>
</template>
<script>
import echarts from 'echarts';
import { Tools, HttpReq, Dates} from '@/assets/js/common.js';
import DateRangePicker from '@/components/DateRangePicker';
import cuAmap from '@/components/AMap';
import Axios from 'axios'
import EZUIKit from "ezuikit-js";
export default {
name: 'carModel',
components: {
DateRangePicker, cuAmap
},
name: 'CarModel',
components: {},
data() {
return {
loading: false,
......@@ -234,77 +76,18 @@ export default {
size: 10,
total: 0,
query:{},
picFileName:'',
tableData: [],
seeMoreData:{},
seeMoreImgUrl:"",
form: {
title:'添加设备', visible:false, reqType:'add', historyDialog:false,seeMoreDialog:false,
title:'新增车辆型号',
visible:false,
reqType:'add',
status:{cu:0},
selectList:[],
item:{},
monthSelectList:[
{name:'一月', value:'01'},
{name:'二月', value:'02'},
{name:'三月', value:'03'},
{name:'四月', value:'04'},
{name:'五月', value:'05'},
{name:'六月', value:'06'},
{name:'七月', value:'07'},
{name:'八月', value:'08'},
{name:'九月', value:'09'},
{name:'十月', value:'10'},
{name:'十一月', value:'11'},
{name:'十二月', value:'12'},
],
item2:{
value:''
},
},
rules: {
projectId: [
{required: true, message: '请选择项目', trigger: 'blur' }
],
id: [
{required: true, message: '请输入设备ID', trigger: 'blur' }
],
code: [
{required: true, message: '请输入设备识别码', trigger: 'blur' }
],
name: [
{required: true, message: '请输入设备名称', trigger: 'blur' }
],
},
form2:{
title:'指令下发', visible:false, logDialog:false, logVisible:false,
query:{},
page: 1,
size: 10,
total: 0,
status:{cu:0},
item:{
ecode: "",
ename:'',
ilAdjust:0,
ilSave:0,
time:'',
ilThreshed:0,
timekey:'ilTimHour',
},
adjustList:[
{name:'启动', value:1},
{name:'不启动', value:0},
],
saveList:[
{name:'存储', value:1},
{name:'不存储', value:0},
],
timeList:[
{name:'', value:'ilTimHour'},
{name:'', value:'ilTimMins'},
{name:'', value:'ilTimSec'},
],
formData:[],
// time: [
// {required: true, message: '请输入车辆型号', trigger: 'blur' }
// ],
},
}
},
......@@ -316,24 +99,19 @@ export default {
},
methods: {
loadData() {
var that = this;
var sort = 'addTime,desc';
var sort = 'id,desc';
var param = this.query;
param.page = this.page - 1;
param.size = this.size;
param.sort = sort;
//请求项目列表
this.reqProjectsSimple().then((list) => {
this.form.selectList = list;
});
this.$nextTick(()=>{
HttpReq.plantFactory.getDeviceManageList(param).then((res) => {
//console.log(res);
HttpReq.truckDispatching.carModelQuery(param).then((res) => {
if(res.code == 200){
this.loading = false;
this.tableData = res.content;
this.total = res.totalElements;
this.tableData = res.data.content;
this.total = res.data.totalElements;
}
})
})
......@@ -346,47 +124,26 @@ export default {
}
return '';
},
// 点击搜索
toSearch() {
this.page = 1
this.loadData()
},
clearLimit(){ // 清除限制
this.loadData()
},
cancelForm(a, b, c){
this.form.visible = false;
},
cancelForm2(){
this.form.historyDialog = false;
},
toAdd() {
// 请除表单验证
this.$refs['form1'] && this.$refs['form1'].clearValidate();
this.form.title = '添加设备';
this.form.title = '新增车辆型号';
this.form.status.cu = 0;
this.form.visible = true;
this.form.reqType = 'add';
this.form.item = {};
this.picFileName = '';
//请求项目列表
this.reqProjectsSimple().then((list) => {
this.form.selectList = list
});
},
toEdit(item) {
// 请除表单验证
this.$refs['form1'] && this.$refs['form1'].clearValidate();
this.form.title = '编辑设备';
this.form.title = '修改车辆型号';
this.form.status.cu = 0;
this.form.visible = true;
this.form.item = item;
this.form.item = {...item};
this.form.reqType = 'edit';
this.picFileName = this.form.item.position;
//请求项目列表
this.reqProjectsSimple().then((list) => {
this.form.selectList = list
});
},
toDelete(item) {
var id = item.id;
......@@ -396,103 +153,7 @@ export default {
type: 'warning'
}).then((e) => {
this.reqRemoveProject([id])
}).catch((e) => {
})
},
//查看图片以及其他信息
toSeeMore(row){
//console.log(row);
this.seeMoreData = row;
this.seeMoreImgUrl = process.env.VUE_APP_LOCAL_API2 + "/avatar/" + row.position;
this.form.seeMoreDialog = true;
this.$nextTick(()=>{
let videoContainer = document.querySelector('#video-container');
videoContainer.innerHTML = '';
var player = new EZUIKit.EZUIKitPlayer({
autoplay: true,
id: 'video-container',
accessToken:'at.4qo66bb35a19h07a0d9pbmtj5v4g0o78-4jmzdu3k24-0866je6-qkz1xuwmf',
url: 'ezopen://open.ys7.com/J16440511/1.live',
template: "simple", // simple - 极简版;standard-标准版;security - 安防版(预览回放);voice-语音版;
width: 530,
height: 320
});
})
},
toHistoryLog(item){
this.form.historyDialog = true;
this.form.item2.value = Dates.format('MM');
this.form.item2.code = item.ecode;
this.$nextTick(() => {
var ecahrtEl = document.getElementById("ecahrtA");
this.ecahrtA = this.ecahrtA || this.createPanelEcharts(ecahrtEl);
this.reqHistoryList(this.form.item2);
});
},
cancelForm3(a, b, c){
this.form2.visible = false;
},
cancelForm4(a, b, c){
this.form2.logVisible = false;
},
// 指令下发
toInstructionSet(item){
var form2 = this.form2;
// 请除表单验证
//this.$refs['form1'] && this.$refs['form1'].clearValidate();
form2.title = '指令下发';
form2.status.cu = 0;
form2.visible = true;
form2.reqType = 'edit';
form2.item = {
ecode:item.ecode,
subcode:item.subcode,
ilAdjust:form2.item.ilAdjust,
ilSave:form2.item.ilSave,
timekey:form2.item.timekey,
time:'',
};
},
// 指令日志
toInstructionLog(item){
var form2 = this.form2;
// 请除表单验证
//this.$refs['form1'] && this.$refs['form1'].clearValidate();
form2.title = '下发日志';
form2.logVisible = true;
form2.item = item;
var param = form2.query;
param.page = form2.page - 1;
param.size = form2.size;
param.sort = 'addTime,desc';
param.deviceId = item.ecode;
HttpReq.equipment.getInstructionLog(param).then((res) => {
if(res){
form2.total = res.totalElements;
var formData = res.content || [],
timeKeys = {'ilTimHour':'小时','ilTimMins':'分钟','ilTimSec':''};
for(var fitem of formData){
fitem.subcode = item.subcode;
for(var key in timeKeys){
if(fitem[key] || fitem[key] === 0){
fitem['time'] = fitem[key];
fitem.timeUnit = timeKeys[key];
}else{
delete fitem[key]
}
};
fitem.ilAdjust = ['不启动', '启动'][fitem.ilAdjust || 0];
fitem.ilSave = ['不存储', '存储'][fitem.ilSave || 0];
fitem.ilSendSuccess = ['下发失败', '下发成功'][fitem.ilSendSuccess || 0];
};
form2.formData = formData;
};
}).catch(function(error) {
console.log('error ________________ ', error);
});
}).catch((e) => {})
},
pageChange(e) {
this.page = e
......@@ -503,15 +164,6 @@ export default {
this.size = e
this.loadData()
},
pageChange2(e) {
this.form2.page = e
this.reqInstructionLog(this.form2.item)
},
sizeChange2(e) {
this.form2.page = 1;
this.form2.size = e;
this.reqInstructionLog(this.form2.item);
},
submitForm(validateName, item){
if(!this.form.status.cu){
this.form.status.cu = 2;
......@@ -528,36 +180,21 @@ export default {
});
};
},
findHistory(){
this.reqHistoryList(this.form.item2);
},
//请求项目列表
reqProjectsSimple(){
return HttpReq.project.getProject().then((res) => {
if(res.code == 200){
return res.data.content;
}else{
return []
}
})
},
//添加设备
//新增车辆型号
reqAddItem(form, item){
let lastData = item;
lastData.position = this.picFileName;
HttpReq.plantFactory.addDeviceManageList(lastData).then((res) => {
let lastData = {...item};
HttpReq.truckDispatching.carModelAdd(lastData).then((res) => {
form.visible = false;
if(res == 1){
if(res.code == 200){
this.$notify({
title: '项目添加成功!',
title: '车辆型号新增成功!',
type: 'success',
duration: 2500
});
this.loadData()
}else{
this.$notify({
title: res.head.message,
title: res.msg,
type: 'error',
duration: 2500
})
......@@ -566,36 +203,35 @@ export default {
form.status.cu = 0
});
},
//修改设备
//修改车辆型号
reqUpdateItem(form, item){
let lastData = item;
lastData.position = this.picFileName;
HttpReq.plantFactory.upDateDeviceManageList(lastData).then((res) => {
let lastData = {...item};
HttpReq.truckDispatching.carModelUpdate(lastData).then((res) => {
form.visible = false;
if(res.status == 400){
this.$notify({
title: res.head.message,
type: 'error',
duration: 2500
})
}else{
if(res.code == 200){
this.$notify({
title: '修改成功!',
title: '车辆型号修改成功!',
type: 'success',
duration: 2500
});
this.loadData()
}else{
this.$notify({
title: res.msg,
type: 'error',
duration: 2500
})
}
}).catch(function(error) {
form.status.cu = 0
});
},
//删除设备
//删除车辆型号
reqRemoveProject(item){
HttpReq.plantFactory.removeDeviceManageList(item).then((res) => {
HttpReq.truckDispatching.carModelDel(item).then((res) => {
if(res.status == 400){
this.$notify({
title: res.head.message,
title: res.msg,
type: 'error',
duration: 2500
})
......@@ -609,229 +245,6 @@ export default {
this.loadData();
})
},
reqHistoryList(item){
var timeSpace = this.query.timeSpace;
var startTime = timeSpace ? timeSpace[0].split(' ')[0] : '';
var endTime = timeSpace ? timeSpace[1].split(' ')[0] : '';
HttpReq.historys.getItemBycode({codes:item.code, startTime:startTime, endTime:endTime}).then((res) => {
if(res.head.code === '0000'){
var body = res.body || {};
var list = body.list || [];
var xAxisData = [];
var helement = [];
var htemperature = [];
var hlenght1 = [], hlenght2 = [], hlenght3 = [];
for(var item of list){
xAxisData.push(item.createTime);
helement.push(item.helement);
htemperature.push(item.htemperature);
hlenght1.push(item.hlenght1);
hlenght2.push(item.hlenght2);
hlenght3.push(item.hlenght3);
};
this.ecahrtA.setData({
xAxis: [
{
type: 'category',
data: xAxisData,
},
],
series: [
{
name: '电压',
data: helement,
},
{
name: '温度',
data: htemperature,
},
{
name: '裂缝1',
data: hlenght1,
},
{
name: '裂缝2',
data: hlenght2,
},
{
name: '裂缝3',
data: hlenght3,
}
]
})
};
}).catch(function(error) {
console.log('catch __ ', error);
})
},
createPanelEcharts(el){
var myChart = echarts.init(el),
lineColor = 'green';
var option = {
title: {
text: '',
subtext: '设备值'
},
tooltip: {
trigger: 'axis'
},
legend: {
data: ['电压', '温度', '裂缝1', '裂缝2', '裂缝3'],
textStyle: {
color: "#000"
},
},
textStyle: {
color: "#333"
},
calculable: true,
xAxis: [
{
type: 'category',
data: [],
}
],
yAxis: [
{
type: 'value',
}
],
grid:{
top:40,
right:10,
bottom:20,
left:45,
},
series: [
{
name: '电压',
type: 'line',
data: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
//itemStyle: {normal: {areaStyle: {type: 'default', color:'#00e5ff'}, color:'#00e5ff'}, color:'green'},
},
{
name: '温度',
type: 'line',
data: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
},
{
name: '裂缝1',
type: 'line',
data: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
//itemStyle: {normal: {areaStyle: {type:'default', color:'red'}, color:'#1849fe'}, color:'red'},
},
{
name: '裂缝2',
type: 'line',
data: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
},
{
name: '裂缝3',
type: 'line',
data: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
}
]
};
myChart.setOption(option);
var setData = function(option){
myChart.hideLoading();
myChart.setOption(option)
};
return {setData:setData, myChart:myChart}
},
reqSetInstruction(form, item){
var param = {
deviceId:item.ecode,
ilAdjust:item.ilAdjust,
ilSave:item.ilSave,
ilThreshed:item.ilThreshed || 0,
[item.timekey]:item.time || 0,
};
HttpReq.equipment.setInstruction(param).then((res) => {
this.form2.visible = false;
this.$notify({
title: '修改成功!',
type: 'success',
duration: 2500
});
this.loadData()
}).catch(function(error) {
this.form2.status.cu = 0;
this.$notify({
title: error,
type: 'error',
duration: 2500
})
});
},
reqInstructionLog(item){
var form2 = this.form2;
var param = form2.query;
param.page = form2.page - 1;
param.size = form2.size;
param.sort = 'addTime,desc';
param.deviceId = item.ecode;
HttpReq.equipment.getInstructionLog(param).then((res) => {
if(res){
form2.total = res.totalElements;
var formData = res.content || [],
timeKeys = {'ilTimHour':'小时','ilTimMins':'分钟','ilTimSec':''};
for(var fitem of formData){
fitem.subcode = item.subcode;
for(var key in timeKeys){
if(fitem[key]){
fitem['time'] = fitem[key];
fitem.timeUnit = timeKeys[key];
}else{
delete fitem[key]
}
};
fitem.ilAdjust = ['不启动', '启动'][fitem.ilAdjust || 0];
fitem.ilSave = ['不存储', '存储'][fitem.ilSave || 0];
fitem.ilSendSuccess = ['下发失败', '下发成功'][fitem.ilSendSuccess || 0];
};
form2.formData = formData;
};
}).catch(function(error) {
console.log('error ________________ ', error);
});
},
//图片上传
excelImport(event) {
let that = this;
let file = event.target.files[0];
let formData1 = new FormData();
formData1.append("avatar", file);
Axios({
url: process.env.VUE_APP_LOCAL_API2 + '/api/wEquipment/updateAvatar',
method: "post",
data: formData1,
}).then(
response => {
if (response.status == 200) {
this.$message.success("上传成功");
that.picFileName = response.data.avatar;
} else {
this.$message.error("上传失败");
}
},
)
.catch(error => {
console.log(error);
});
},
//项目名称展示
formatter(row){
let proName = "";
this.form.selectList.forEach(function(item){
if(row.projectId == item.id){
proName = item.name;
}
})
return proName
}
}
}
</script>
......
<template>
<div class="common-page device-manage">
<div class="option page-row">
<!--工具栏-->
<div class="head-container">
<!-- 搜索 -->
<label class="el-form-item-label" style="font-weight: 500;">设备识别码</label>
<el-input v-model="query.code" clearable size="small" placeholder="请输入设备识别码" style="width:180px;" @clear="clearLimit"/>
<el-button size="mini" type="success" icon="el-icon-search" @click="toSearch">搜索</el-button>
</div>
</div>
<!-- 表格 -->
<div class="panel-bottom page-row">
<h3>设备管理列表</h3>
<h3>车辆检修管理</h3>
<div class="ctin-box">
<div class="content-within">
<div class="content-fix">
......@@ -19,30 +12,17 @@
</div>
<div class="content">
<el-table :data="tableData" v-loading="loading" border style="width:auto" :row-class-name="tableRowClassName">
<el-table-column prop="id" label="设备ID" align="center"></el-table-column>
<el-table-column prop="code" label="设备识别码" align="center"></el-table-column>
<el-table-column prop="name" label="设备名称" align="center"></el-table-column>
<el-table-column prop="alarmWindspeed" label="风速报警阈值" align="center"></el-table-column>
<el-table-column prop="alarmTemperature" label="温度报警阈值" align="center"></el-table-column>
<el-table-column prop="alarmHumidity" label="湿度报警阈值" align="center"></el-table-column>
<el-table-column prop="alarmCo2" label="二氧化碳报警阈值" align="center"></el-table-column>
<el-table-column prop="alarmMlux" label="光照报警阈值" align="center"></el-table-column>
<el-table-column prop="alarmPh" label="酸碱度报警阈值" align="center"></el-table-column>
<el-table-column prop="alarmWaterTemperature" label="水温报警阈值" align="center"></el-table-column>
<el-table-column prop="alarmElectricalConductance" label="电导率报警阈值" align="center"></el-table-column>
<el-table-column prop="alarmWaterDepth" label="液位报警阈值" align="center"></el-table-column>
<el-table-column prop="createTime" label="设备激活时间" align="center"></el-table-column>
<el-table-column prop="addTime" label="最后采集时间" align="center"></el-table-column>
<el-table-column prop="projectId" label="所属项目" align="center" :formatter="formatter"></el-table-column>
<el-table-column label="操作" min-width="180px" align="center" fixed="right">
<el-table-column prop="id" label="序号" align="center"></el-table-column>
<el-table-column prop="number" label="编码" align="center"></el-table-column>
<el-table-column prop="name" label="车辆名称" align="center"></el-table-column>
<el-table-column prop="driver" label="司机" align="center"></el-table-column>
<el-table-column prop="carrepair" label="检修类型" align="center"></el-table-column>
<el-table-column prop="createTime" label="日期" align="center"></el-table-column>
<el-table-column prop="cardescribe" label="检修保养说明" align="center"></el-table-column>
<el-table-column label="操作" align="center" fixed="right">
<template slot-scope="scope">
<el-button size="mini" type="success" icon="el-icon-view" @click="toSeeMore(scope.row)"></el-button>
<el-button size="mini" type="primary" icon="el-icon-edit" @click="toEdit(scope.row)"></el-button>
<el-button size="mini" type="danger" icon="el-icon-delete" @click="toDelete(scope.row)"></el-button>
<!-- <div class="btn-groub2">
<el-button size="mini" type="warning" icon="el-icon-set-up" @click="toInstructionSet(scope.row)"></el-button>
<el-button size="mini" type="info" icon="el-icon-tickets" @click="toInstructionLog(scope.row)"></el-button>
</div> -->
</template>
</el-table-column>
</el-table>
......@@ -57,56 +37,24 @@
<!-- 表单渲染 -->
<el-dialog append-to-body :close-on-click-modal="true" :before-close="cancelForm" :visible.sync="form.visible" :title="form.title" width="700px">
<el-form :model="form.item" :rules="rules" ref="form1" :inline="true" size="small" label-width="150px">
<el-form-item label="选择项目" prop="projectId" >
<el-select v-model="form.item.projectId" placeholder="请选择项目" size="small">
<el-option v-for="(obj,index) in form.selectList" :label="obj.name" :value="obj.id" :key="index"></el-option>
</el-select>
</el-form-item>
<!-- <el-form-item label="设备ID" prop="id">
<el-input v-model="form.item.id" style="width:280px;" placeholder="请输入设备编号" :disabled="form.reqType==='edit'"/>
</el-form-item> -->
<el-form-item label="设备识别码" prop="code">
<el-input v-model="form.item.code" style="width:260px;" placeholder="请输入设备识别码" :disabled="form.reqType==='edit'"/>
</el-form-item>
<el-form-item label="设备名称" prop="name">
<el-input v-model="form.item.name" style="width:260px;" placeholder="请输入设备名称"/>
</el-form-item>
<el-form-item label="风速报警阈值" prop="alarmWindspeed" >
<el-input v-model="form.item.alarmWindspeed" style="width:160px;" placeholder="请输入风速报警阈值"/>
</el-form-item>
<el-form-item label="温度报警阈值" prop="alarmTemperature" >
<el-input v-model="form.item.alarmTemperature" style="width:160px;" placeholder="请输入温度报警阈值"/>
</el-form-item>
<el-form-item label="湿度报警阈值" prop="alarmHumidity" >
<el-input v-model="form.item.alarmHumidity" style="width:160px;" placeholder="请输入湿度报警阈值"/>
</el-form-item>
<el-form-item label="二氧化碳报警阈值" prop="alarmCo2" >
<el-input v-model="form.item.alarmCo2" style="width:160px;" placeholder="请输入二氧化碳报警阈值"/>
</el-form-item>
<el-form-item label="光照报警阈值" prop="alarmMlux" >
<el-input v-model="form.item.alarmMlux" style="width:160px;" placeholder="请输入光照报警阈值"/>
</el-form-item>
<el-form-item label="酸碱度报警阈值" prop="alarmPh" >
<el-input v-model="form.item.alarmPh" style="width:160px;" placeholder="请输入酸碱度报警阈值"/>
<el-form-item label="编码" prop="number">
<el-input v-model="form.item.number" style="width:280px;" placeholder="请输入编码" :disabled="this.form.reqType == 'edit'"/>
</el-form-item>
<el-form-item label="水温报警阈值" prop="alarmWaterTemperature" >
<el-input v-model="form.item.alarmWaterTemperature" style="width:160px;" placeholder="请输入水温报警阈值"/>
<el-form-item label="车辆名称" prop="name">
<el-input v-model="form.item.name" style="width:280px;" placeholder="请输入车辆名称" :disabled="this.form.reqType == 'edit'"/>
</el-form-item>
<el-form-item label="电导率报警阈值" prop="alarmElectricalConductance" >
<el-input v-model="form.item.alarmElectricalConductance" style="width:160px;" placeholder="请输入电导率报警阈值"/>
<el-form-item label="司机" prop="driver">
<el-input v-model="form.item.driver" style="width:280px;" placeholder="请输入司机" :disabled="this.form.reqType == 'edit'"/>
</el-form-item>
<el-form-item label="液位报警阈值" prop="alarmWaterDepth" >
<el-input v-model="form.item.alarmWaterDepth" style="width:160px;" placeholder="请输入液位报警阈值"/>
</el-form-item>
<el-form-item label="上传设备位置" prop="position">
<el-input v-model="picFileName" style="width:160px;" placeholder="请上传设备位置" disabled />
<input type="file" name="image" @change="excelImport($event)" />
<el-form-item label="检修类型" prop="carrepair">
<el-select v-model="form.item.carrepair" placeholder="请选择检修类型" style="width:280px;">
<el-option label="定期保养" value="定期保养"></el-option>
<el-option label="定期检修" value="定期检修"></el-option>
</el-select>
</el-form-item>
<div style="margin:0px 0px 10px 55px;font-size:16px;font-weight:bold;">摄像头参数配置</div>
<el-form-item label="摄像头ID" prop="camera">
<el-input v-model="form.item.camera" style="width:160px;" placeholder="请输入摄像头ID"/>
<el-form-item label="检修保养说明" prop="cardescribe">
<el-input v-model="form.item.cardescribe" style="width:280px;" placeholder="请输入检修保养说明"/>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="text" @click="cancelForm">取消</el-button>
......@@ -114,119 +62,15 @@
</div>
</el-dialog>
<!-- 查看更多 -->
<el-dialog title="查看设备" :visible.sync="form.seeMoreDialog" width="800px">
<el-form :model="seeMoreData" style="margin-top:20px;">
<el-form-item label="摄像头位置图片" label-width="150px">
<el-image :src="seeMoreImgUrl" style="width:300px;"></el-image>
</el-form-item>
<el-form-item label="摄像头图像" label-width="150px">
<div id="video-container" style="width:550px;height:350px"></div>
</el-form-item>
<el-form-item label="摄像头ID" label-width="150px">
<el-input v-model="seeMoreData.camera" style="width:200px"></el-input>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="form.seeMoreDialog = false">关闭</el-button>
</div>
</el-dialog>
<!-- 历史图表 -->
<el-dialog class="ecahrt1-dialog" append-to-body :close-on-click-modal="false" :before-close="cancelForm2" :visible.sync="form.historyDialog">
<el-form :rules="rules" ref="form1" :inline="true" size="small" label-width="80px">
<!-- <el-form-item prop="eprogramid" >
<el-select v-model="form.item2.value" placeholder="请选择月份">
<el-option v-for="obj in form.monthSelectList" :label="obj.name" :value="obj.value"></el-option>
</el-select>
</el-form-item> -->
<el-form-item prop="eprogramid" >
<date-range-picker v-model="query.timeSpace" class="date-item" />
</el-form-item>
<el-form-item >
<el-button type="primary" @click="findHistory">查询</el-button>
</el-form-item>
<el-form-item prop="content" style="display:block;" >
<div class="form-body">
<div id="ecahrtA"></div>
</div>
</el-form-item>
</el-form>
</el-dialog>
<!-- 指令下发 -->
<el-dialog append-to-body :close-on-click-modal="false" :before-close="cancelForm3" :visible.sync="form2.visible" :title="form2.title" width="600px">
<el-form :model="form2.item" :rules="rules" ref="form2" :inline="true" size="small" label-width="100px">
<el-form-item label="设备ID" prop="ecode">
<el-input v-model="form2.item.ecode" style="width:280px;" placeholder="请输入设备编号" :disabled="form2.reqType==='edit'"/>
</el-form-item>
<el-form-item label="设备识别码" prop="subcode">
<el-input v-model="form2.item.subcode" style="width:260px;" placeholder="请输入设备识别码" :disabled="form2.reqType==='edit'"/>
</el-form-item>
<el-form-item label="是否启动校正" prop="ilAdjust" style="width:240px;">
<el-select v-model="form2.item.ilAdjust" placeholder="请选择" size="small" style="width:120px;">
<el-option v-for="obj in form2.adjustList" :label="obj.name" :key="obj.value" :value="obj.value"></el-option>
</el-select>
</el-form-item>
<el-form-item label="是否存储裂缝" prop="ilSave" style="width:240px;">
<el-select v-model="form2.item.ilSave" placeholder="请选择" size="small" style="width:120px;">
<el-option v-for="(obj,index) in form2.saveList" :label="obj.name" :value="obj.value" :key="index"></el-option>
</el-select>
</el-form-item>
<el-form-item label="裂缝阈值" prop="ilThreshed" >
<el-input v-model="form2.item.ilThreshed" style="width:160px;" placeholder="请输入裂缝阈值"/>
<span style="color:#aaa;">1~255</span>
</el-form-item>
<el-form-item label="唤醒周期" prop="timekey" >
<el-select v-model="form2.item.timekey" placeholder="请选择时间" size="small" style="width:120px;">
<el-option v-for="(obj,index) in form2.timeList" :label="obj.name" :value="obj.value" :key="index"></el-option>
</el-select>
<el-input v-model="form2.item.time" style="width:160px;" placeholder="请输入时长"/>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="text" @click="cancelForm3">取消</el-button>
<el-button :loading="form2.status.cu === 2" type="primary" @click="reqSetInstruction('form2', form2.item)">确认</el-button>
</div>
</el-dialog>
<!-- 指令日志 -->
<el-dialog append-to-body :close-on-click-modal="false" :before-close="cancelForm4" :visible.sync="form2.logVisible" :title="form2.title" width="65%">
<div class="content">
<el-table :data="form2.formData" v-loading="loading" border style="width:auto" :row-class-name="tableRowClassName">
<el-table-column prop="subcode" label="设备识别码" min-width="135px"></el-table-column>
<el-table-column prop="ilThreshed" label="裂缝阈值"></el-table-column>
<el-table-column prop="ilAdjust" label="校正功能"></el-table-column>
<el-table-column prop="ilSave" label="存储裂缝" ></el-table-column>
<el-table-column prop="ilSendTime" label="唤醒时间">
<template slot-scope="scope">
{{scope.row.time + '('+scope.row.timeUnit+')'}}
</template>
</el-table-column>
<el-table-column prop="ilSendSuccess" label="下发状态" ></el-table-column>
<el-table-column prop="ilSendTime" label="下发时间" min-width="145px"></el-table-column>
</el-table>
<!--分页组件-->
<el-pagination :total="form2.total" :current-page="form2.page" style="margin-top:8px;" layout="total, prev, pager, next, sizes" @size-change="sizeChange2" @current-change="pageChange2" />
</div>
</el-dialog>
</div>
</template>
<script>
import echarts from 'echarts';
import { Tools, HttpReq, Dates} from '@/assets/js/common.js';
import DateRangePicker from '@/components/DateRangePicker';
import cuAmap from '@/components/AMap';
import Axios from 'axios'
import EZUIKit from "ezuikit-js";
export default {
name: 'carRepair',
components: {
DateRangePicker, cuAmap
},
name: 'CarRepair',
components: {},
data() {
return {
loading: false,
......@@ -234,77 +78,18 @@ export default {
size: 10,
total: 0,
query:{},
picFileName:'',
tableData: [],
seeMoreData:{},
seeMoreImgUrl:"",
form: {
title:'添加设备', visible:false, reqType:'add', historyDialog:false,seeMoreDialog:false,
title:'新增车辆维修',
visible:false,
reqType:'add',
status:{cu:0},
selectList:[],
item:{},
monthSelectList:[
{name:'一月', value:'01'},
{name:'二月', value:'02'},
{name:'三月', value:'03'},
{name:'四月', value:'04'},
{name:'五月', value:'05'},
{name:'六月', value:'06'},
{name:'七月', value:'07'},
{name:'八月', value:'08'},
{name:'九月', value:'09'},
{name:'十月', value:'10'},
{name:'十一月', value:'11'},
{name:'十二月', value:'12'},
],
item2:{
value:''
},
},
rules: {
projectId: [
{required: true, message: '请选择项目', trigger: 'blur' }
],
id: [
{required: true, message: '请输入设备ID', trigger: 'blur' }
],
code: [
{required: true, message: '请输入设备识别码', trigger: 'blur' }
],
name: [
{required: true, message: '请输入设备名称', trigger: 'blur' }
],
},
form2:{
title:'指令下发', visible:false, logDialog:false, logVisible:false,
query:{},
page: 1,
size: 10,
total: 0,
status:{cu:0},
item:{
ecode: "",
ename:'',
ilAdjust:0,
ilSave:0,
time:'',
ilThreshed:0,
timekey:'ilTimHour',
},
adjustList:[
{name:'启动', value:1},
{name:'不启动', value:0},
],
saveList:[
{name:'存储', value:1},
{name:'不存储', value:0},
],
timeList:[
{name:'', value:'ilTimHour'},
{name:'', value:'ilTimMins'},
{name:'', value:'ilTimSec'},
],
formData:[],
// time: [
// {required: true, message: '请输入车辆型号', trigger: 'blur' }
// ],
},
}
},
......@@ -316,24 +101,19 @@ export default {
},
methods: {
loadData() {
var that = this;
var sort = 'addTime,desc';
var sort = 'createTime,desc';
var param = this.query;
param.page = this.page - 1;
param.size = this.size;
param.sort = sort;
//请求项目列表
this.reqProjectsSimple().then((list) => {
this.form.selectList = list;
});
this.$nextTick(()=>{
HttpReq.plantFactory.getDeviceManageList(param).then((res) => {
//console.log(res);
HttpReq.truckDispatching.carRepairQuery(param).then((res) => {
if(res.code == 200){
this.loading = false;
this.tableData = res.content;
this.total = res.totalElements;
this.tableData = res.data.content;
this.total = res.data.totalElements;
}
})
})
......@@ -346,47 +126,26 @@ export default {
}
return '';
},
// 点击搜索
toSearch() {
this.page = 1
this.loadData()
},
clearLimit(){ // 清除限制
this.loadData()
},
cancelForm(a, b, c){
this.form.visible = false;
},
cancelForm2(){
this.form.historyDialog = false;
},
toAdd() {
// 请除表单验证
this.$refs['form1'] && this.$refs['form1'].clearValidate();
this.form.title = '添加设备';
this.form.title = '新增车辆维修';
this.form.status.cu = 0;
this.form.visible = true;
this.form.reqType = 'add';
this.form.item = {};
this.picFileName = '';
//请求项目列表
this.reqProjectsSimple().then((list) => {
this.form.selectList = list
});
},
toEdit(item) {
// 请除表单验证
this.$refs['form1'] && this.$refs['form1'].clearValidate();
this.form.title = '编辑设备';
this.form.title = '修改车辆维修';
this.form.status.cu = 0;
this.form.visible = true;
this.form.item = item;
this.form.item = {...item};
this.form.reqType = 'edit';
this.picFileName = this.form.item.position;
//请求项目列表
this.reqProjectsSimple().then((list) => {
this.form.selectList = list
});
},
toDelete(item) {
var id = item.id;
......@@ -396,103 +155,7 @@ export default {
type: 'warning'
}).then((e) => {
this.reqRemoveProject([id])
}).catch((e) => {
})
},
//查看图片以及其他信息
toSeeMore(row){
//console.log(row);
this.seeMoreData = row;
this.seeMoreImgUrl = process.env.VUE_APP_LOCAL_API2 + "/avatar/" + row.position;
this.form.seeMoreDialog = true;
this.$nextTick(()=>{
let videoContainer = document.querySelector('#video-container');
videoContainer.innerHTML = '';
var player = new EZUIKit.EZUIKitPlayer({
autoplay: true,
id: 'video-container',
accessToken:'at.4qo66bb35a19h07a0d9pbmtj5v4g0o78-4jmzdu3k24-0866je6-qkz1xuwmf',
url: 'ezopen://open.ys7.com/J16440511/1.live',
template: "simple", // simple - 极简版;standard-标准版;security - 安防版(预览回放);voice-语音版;
width: 530,
height: 320
});
})
},
toHistoryLog(item){
this.form.historyDialog = true;
this.form.item2.value = Dates.format('MM');
this.form.item2.code = item.ecode;
this.$nextTick(() => {
var ecahrtEl = document.getElementById("ecahrtA");
this.ecahrtA = this.ecahrtA || this.createPanelEcharts(ecahrtEl);
this.reqHistoryList(this.form.item2);
});
},
cancelForm3(a, b, c){
this.form2.visible = false;
},
cancelForm4(a, b, c){
this.form2.logVisible = false;
},
// 指令下发
toInstructionSet(item){
var form2 = this.form2;
// 请除表单验证
//this.$refs['form1'] && this.$refs['form1'].clearValidate();
form2.title = '指令下发';
form2.status.cu = 0;
form2.visible = true;
form2.reqType = 'edit';
form2.item = {
ecode:item.ecode,
subcode:item.subcode,
ilAdjust:form2.item.ilAdjust,
ilSave:form2.item.ilSave,
timekey:form2.item.timekey,
time:'',
};
},
// 指令日志
toInstructionLog(item){
var form2 = this.form2;
// 请除表单验证
//this.$refs['form1'] && this.$refs['form1'].clearValidate();
form2.title = '下发日志';
form2.logVisible = true;
form2.item = item;
var param = form2.query;
param.page = form2.page - 1;
param.size = form2.size;
param.sort = 'addTime,desc';
param.deviceId = item.ecode;
HttpReq.equipment.getInstructionLog(param).then((res) => {
if(res){
form2.total = res.totalElements;
var formData = res.content || [],
timeKeys = {'ilTimHour':'小时','ilTimMins':'分钟','ilTimSec':''};
for(var fitem of formData){
fitem.subcode = item.subcode;
for(var key in timeKeys){
if(fitem[key] || fitem[key] === 0){
fitem['time'] = fitem[key];
fitem.timeUnit = timeKeys[key];
}else{
delete fitem[key]
}
};
fitem.ilAdjust = ['不启动', '启动'][fitem.ilAdjust || 0];
fitem.ilSave = ['不存储', '存储'][fitem.ilSave || 0];
fitem.ilSendSuccess = ['下发失败', '下发成功'][fitem.ilSendSuccess || 0];
};
form2.formData = formData;
};
}).catch(function(error) {
console.log('error ________________ ', error);
});
}).catch((e) => {})
},
pageChange(e) {
this.page = e
......@@ -503,15 +166,6 @@ export default {
this.size = e
this.loadData()
},
pageChange2(e) {
this.form2.page = e
this.reqInstructionLog(this.form2.item)
},
sizeChange2(e) {
this.form2.page = 1;
this.form2.size = e;
this.reqInstructionLog(this.form2.item);
},
submitForm(validateName, item){
if(!this.form.status.cu){
this.form.status.cu = 2;
......@@ -528,36 +182,21 @@ export default {
});
};
},
findHistory(){
this.reqHistoryList(this.form.item2);
},
//请求项目列表
reqProjectsSimple(){
return HttpReq.project.getProject().then((res) => {
if(res.code == 200){
return res.data.content;
}else{
return []
}
})
},
//添加设备
//新增车辆维修
reqAddItem(form, item){
let lastData = item;
lastData.position = this.picFileName;
HttpReq.plantFactory.addDeviceManageList(lastData).then((res) => {
let lastData = {...item};
HttpReq.truckDispatching.carRepairAdd(lastData).then((res) => {
form.visible = false;
if(res == 1){
if(res.code == 200){
this.$notify({
title: '项目添加成功!',
title: '车辆维修新增成功!',
type: 'success',
duration: 2500
});
this.loadData()
}else{
this.$notify({
title: res.head.message,
title: res.msg,
type: 'error',
duration: 2500
})
......@@ -566,36 +205,35 @@ export default {
form.status.cu = 0
});
},
//修改设备
//修改车辆维修
reqUpdateItem(form, item){
let lastData = item;
lastData.position = this.picFileName;
HttpReq.plantFactory.upDateDeviceManageList(lastData).then((res) => {
let lastData = {...item};
HttpReq.truckDispatching.carRepairUpdate(lastData).then((res) => {
form.visible = false;
if(res.status == 400){
this.$notify({
title: res.head.message,
type: 'error',
duration: 2500
})
}else{
if(res.code == 200){
this.$notify({
title: '修改成功!',
title: '车辆维修修改成功!',
type: 'success',
duration: 2500
});
this.loadData()
}else{
this.$notify({
title: res.msg,
type: 'error',
duration: 2500
})
}
}).catch(function(error) {
form.status.cu = 0
});
},
//删除设备
//删除车辆维修
reqRemoveProject(item){
HttpReq.plantFactory.removeDeviceManageList(item).then((res) => {
HttpReq.truckDispatching.carRepairDel(item).then((res) => {
if(res.status == 400){
this.$notify({
title: res.head.message,
title: res.msg,
type: 'error',
duration: 2500
})
......@@ -609,229 +247,6 @@ export default {
this.loadData();
})
},
reqHistoryList(item){
var timeSpace = this.query.timeSpace;
var startTime = timeSpace ? timeSpace[0].split(' ')[0] : '';
var endTime = timeSpace ? timeSpace[1].split(' ')[0] : '';
HttpReq.historys.getItemBycode({codes:item.code, startTime:startTime, endTime:endTime}).then((res) => {
if(res.head.code === '0000'){
var body = res.body || {};
var list = body.list || [];
var xAxisData = [];
var helement = [];
var htemperature = [];
var hlenght1 = [], hlenght2 = [], hlenght3 = [];
for(var item of list){
xAxisData.push(item.createTime);
helement.push(item.helement);
htemperature.push(item.htemperature);
hlenght1.push(item.hlenght1);
hlenght2.push(item.hlenght2);
hlenght3.push(item.hlenght3);
};
this.ecahrtA.setData({
xAxis: [
{
type: 'category',
data: xAxisData,
},
],
series: [
{
name: '电压',
data: helement,
},
{
name: '温度',
data: htemperature,
},
{
name: '裂缝1',
data: hlenght1,
},
{
name: '裂缝2',
data: hlenght2,
},
{
name: '裂缝3',
data: hlenght3,
}
]
})
};
}).catch(function(error) {
console.log('catch __ ', error);
})
},
createPanelEcharts(el){
var myChart = echarts.init(el),
lineColor = 'green';
var option = {
title: {
text: '',
subtext: '设备值'
},
tooltip: {
trigger: 'axis'
},
legend: {
data: ['电压', '温度', '裂缝1', '裂缝2', '裂缝3'],
textStyle: {
color: "#000"
},
},
textStyle: {
color: "#333"
},
calculable: true,
xAxis: [
{
type: 'category',
data: [],
}
],
yAxis: [
{
type: 'value',
}
],
grid:{
top:40,
right:10,
bottom:20,
left:45,
},
series: [
{
name: '电压',
type: 'line',
data: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
//itemStyle: {normal: {areaStyle: {type: 'default', color:'#00e5ff'}, color:'#00e5ff'}, color:'green'},
},
{
name: '温度',
type: 'line',
data: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
},
{
name: '裂缝1',
type: 'line',
data: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
//itemStyle: {normal: {areaStyle: {type:'default', color:'red'}, color:'#1849fe'}, color:'red'},
},
{
name: '裂缝2',
type: 'line',
data: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
},
{
name: '裂缝3',
type: 'line',
data: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
}
]
};
myChart.setOption(option);
var setData = function(option){
myChart.hideLoading();
myChart.setOption(option)
};
return {setData:setData, myChart:myChart}
},
reqSetInstruction(form, item){
var param = {
deviceId:item.ecode,
ilAdjust:item.ilAdjust,
ilSave:item.ilSave,
ilThreshed:item.ilThreshed || 0,
[item.timekey]:item.time || 0,
};
HttpReq.equipment.setInstruction(param).then((res) => {
this.form2.visible = false;
this.$notify({
title: '修改成功!',
type: 'success',
duration: 2500
});
this.loadData()
}).catch(function(error) {
this.form2.status.cu = 0;
this.$notify({
title: error,
type: 'error',
duration: 2500
})
});
},
reqInstructionLog(item){
var form2 = this.form2;
var param = form2.query;
param.page = form2.page - 1;
param.size = form2.size;
param.sort = 'addTime,desc';
param.deviceId = item.ecode;
HttpReq.equipment.getInstructionLog(param).then((res) => {
if(res){
form2.total = res.totalElements;
var formData = res.content || [],
timeKeys = {'ilTimHour':'小时','ilTimMins':'分钟','ilTimSec':''};
for(var fitem of formData){
fitem.subcode = item.subcode;
for(var key in timeKeys){
if(fitem[key]){
fitem['time'] = fitem[key];
fitem.timeUnit = timeKeys[key];
}else{
delete fitem[key]
}
};
fitem.ilAdjust = ['不启动', '启动'][fitem.ilAdjust || 0];
fitem.ilSave = ['不存储', '存储'][fitem.ilSave || 0];
fitem.ilSendSuccess = ['下发失败', '下发成功'][fitem.ilSendSuccess || 0];
};
form2.formData = formData;
};
}).catch(function(error) {
console.log('error ________________ ', error);
});
},
//图片上传
excelImport(event) {
let that = this;
let file = event.target.files[0];
let formData1 = new FormData();
formData1.append("avatar", file);
Axios({
url: process.env.VUE_APP_LOCAL_API2 + '/api/wEquipment/updateAvatar',
method: "post",
data: formData1,
}).then(
response => {
if (response.status == 200) {
this.$message.success("上传成功");
that.picFileName = response.data.avatar;
} else {
this.$message.error("上传失败");
}
},
)
.catch(error => {
console.log(error);
});
},
//项目名称展示
formatter(row){
let proName = "";
this.form.selectList.forEach(function(item){
if(row.projectId == item.id){
proName = item.name;
}
})
return proName
}
}
}
</script>
......
......@@ -13,10 +13,14 @@
<div class="content">
<el-table :data="tableData" v-loading="loading" border style="width:auto" :row-class-name="tableRowClassName">
<el-table-column prop="id" label="序号" align="center"></el-table-column>
<el-table-column prop="id" label="编码" align="center"></el-table-column>
<el-table-column prop="id" label="车辆类型名称" align="center"></el-table-column>
<el-table-column prop="id" label="车辆标识图" align="center"></el-table-column>
<el-table-column prop="time" label="日期" align="center"></el-table-column>
<el-table-column prop="code" label="编码" align="center"></el-table-column>
<el-table-column prop="name" label="车辆类型名称" align="center"></el-table-column>
<el-table-column prop="card" label="车辆标识图" align="center">
<template slot-scope="scope">
<img :src="imgSrcStart + '/avatar/' + scope.row.card" width="40" height="40"/>
</template>
</el-table-column>
<el-table-column prop="createTime" label="日期" align="center"></el-table-column>
<el-table-column label="操作" align="center" fixed="right">
<template slot-scope="scope">
<el-button size="mini" type="primary" icon="el-icon-edit" @click="toEdit(scope.row)"></el-button>
......@@ -36,15 +40,20 @@
<el-dialog append-to-body :close-on-click-modal="true" :before-close="cancelForm" :visible.sync="form.visible" :title="form.title" width="700px">
<el-form :model="form.item" :rules="rules" ref="form1" :inline="true" size="small" label-width="150px">
<el-form-item label="编码">
<el-input v-model="form.item.time" style="width:280px;" placeholder="请输入编码"/>
<el-input v-model="form.item.code" style="width:280px;" placeholder="请输入编码"/>
</el-form-item>
<el-form-item label="车辆类型名称">
<el-input v-model="form.item.time" style="width:280px;" placeholder="请输入车辆类型名称"/>
<el-select v-model="form.item.name" placeholder="请选择车辆类型" style="width:280px;">
<el-option label="挖机" value="挖机"></el-option>
<el-option label="铲车" value="铲车"></el-option>
<el-option label="卡车" value="卡车"></el-option>
<el-option label="清扫车" value="清扫车"></el-option>
</el-select>
</el-form-item>
<!-- <el-form-item label="车辆标识图" prop="position">
<el-form-item label="车辆标识图" prop="position">
<el-input v-model="picFileName" style="width:160px;" placeholder="请上传设备位置" disabled />
<input type="file" name="image" @change="excelImport($event)" />
</el-form-item> -->
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="text" @click="cancelForm">取消</el-button>
......@@ -64,12 +73,12 @@ export default {
components: {},
data() {
return {
imgSrcStart:process.env.VUE_APP_LOCAL_API2,
loading: false,
page: 1,
size: 10,
total: 0,
query:{},
alarmTimeId:'',
picFileName:'',
tableData: [],
form: {
......@@ -101,7 +110,7 @@ export default {
param.sort = sort;
this.$nextTick(()=>{
HttpReq.truckDispatching.alarmTimeQuery(param).then((res) => {
HttpReq.truckDispatching.carTypeQuery(param).then((res) => {
if(res.code == 200){
this.loading = false;
this.tableData = res.data.content;
......@@ -140,8 +149,7 @@ export default {
this.form.visible = true;
this.form.item = {...item};
this.form.reqType = 'edit';
this.alarmTimeId = this.form.item.id;
//this.picFileName = this.form.item.position;
this.picFileName = this.form.item.card;
},
toDelete(item) {
var id = item.id;
......@@ -181,8 +189,8 @@ export default {
//新增车辆类型
reqAddItem(form, item){
let lastData = {...item};
//lastData.position = this.picFileName;
HttpReq.truckDispatching.alarmTimeAdd(lastData).then((res) => {
lastData.card = this.picFileName;
HttpReq.truckDispatching.carTypeAdd(lastData).then((res) => {
form.visible = false;
if(res.code == 200){
this.$notify({
......@@ -205,9 +213,8 @@ export default {
//修改车辆类型
reqUpdateItem(form, item){
let lastData = {...item};
lastData.id = this.alarmTimeId;
//lastData.position = this.picFileName;
HttpReq.truckDispatching.alarmTimeUpdate(lastData).then((res) => {
lastData.card = this.picFileName;
HttpReq.truckDispatching.carTypeUpdate(lastData).then((res) => {
form.visible = false;
if(res.code == 200){
this.$notify({
......@@ -222,6 +229,7 @@ export default {
type: 'error',
duration: 2500
})
this.loadData()
}
}).catch(function(error) {
form.status.cu = 0
......@@ -229,7 +237,7 @@ export default {
},
//删除车辆类型
reqRemoveProject(item){
HttpReq.truckDispatching.alarmTimetDel(item).then((res) => {
HttpReq.truckDispatching.carTypeDel(item).then((res) => {
if(res.status == 400){
this.$notify({
title: res.msg,
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment