feat(): 一键上报

master
DongZeLiang 2024-06-11 21:17:21 +08:00
parent 6a414ad2e4
commit 91530b56c8
4 changed files with 365 additions and 320 deletions

View File

@ -85,58 +85,3 @@ export function instanceGear(vin, gear) {
data: { 'vin': vin, 'gear': gear }
})
}
/**
* 一键上线
*/
export function unifiedOnline() {
return request({
url: `/vehicle/instance/unified/online`,
method: 'post'
})
}
/**
* 一键离线
*/
export function unifiedOffline() {
return request({
url: `/vehicle/instance/unified/offline`,
method: 'post'
})
}
/**
* 一键上报
*/
export function unifiedSend() {
return request({
url: `/vehicle/instance/unified/send`,
method: 'post'
})
}
/**
* 一键重置路径
*/
export function unifiedPosition() {
return request({
url: `/vehicle/instance/unified/position`,
method: 'post'
})
}
/**
* 一键取消上报
*/
export function unifiedStop() {
return request({
url: `/vehicle/instance/unified/stop`,
method: 'post'
})
}
/**
* 一键执行任务状态
*/
export function unifiedStatus() {
return request({
url: `/vehicle/instance/unified/status`,
method: 'GET'
})
}

View File

@ -0,0 +1,56 @@
import request from '@/utils/request'
/**
* 一键上线
*/
export function unifiedOnline() {
return request({
url: `/vehicle/unified/online`,
method: 'post'
})
}
/**
* 一键离线
*/
export function unifiedOffline() {
return request({
url: `/vehicle/unified/offline`,
method: 'post'
})
}
/**
* 一键上报
*/
export function unifiedSend() {
return request({
url: `/vehicle/unified/send`,
method: 'post'
})
}
/**
* 一键重置路径
*/
export function unifiedPosition() {
return request({
url: `/vehicle/unified/position`,
method: 'post'
})
}
/**
* 一键取消上报
*/
export function unifiedStop() {
return request({
url: `/vehicle/unified/stop`,
method: 'post'
})
}
/**
* 一键执行任务状态
*/
export function unifiedStatus() {
return request({
url: `/vehicle/unified/status`,
method: 'GET'
})
}

View File

@ -1,18 +1,158 @@
<template>
<div class="app-container">
统一调配
<el-row :gutter="10" style="margin-bottom: 10px;padding: 0 10px">
<el-col :span="24">
<el-button @click="vehicleUnifiedOnline" type="success">一键上线</el-button>
<el-button @click="vehicleUnifiedOffline" type="success">一键离线</el-button>
<el-button @click="vehicleUnifiedSend" type="primary">一键上报</el-button>
<el-button @click="vehicleUnifiedPosition" type="primary">一键重置路径</el-button>
<el-button @click="vehicleUnifiedStop" type="warning">一键取消上报</el-button>
</el-col>
</el-row>
<el-row :gutter="10" style="margin-top: 10px;">
<el-empty v-if="!unifiedInfo.unifiedStatus" description="没有任务执行" />
<el-card v-if="unifiedInfo.unifiedStatus">
<div slot="header" class="clearfix">
<span>{{unifiedInfo.taskName}}</span>
</div>
<el-progress
:percentage="(unifiedInfo.taskSuccessSum+unifiedInfo.taskErrorSum)/unifiedInfo.taskExecutionSum*100"
:text-inside="true"
:stroke-width="26"
:format="format"
:color="customColors"
/>
<div style="width: 100%; margin: 5px 0">任务描述<el-tag>{{unifiedInfo.taskName}}</el-tag></div>
<div style="width: 100%; margin: 5px 0">任务总数<el-tag>{{unifiedInfo.taskExecutionSum}}</el-tag></div>
<div style="width: 100%; margin: 5px 0">成功总数<el-tag>{{unifiedInfo.taskSuccessSum}}</el-tag></div>
<div style="width: 100%; margin: 5px 0">失败总数<el-tag>{{unifiedInfo.taskErrorSum}}</el-tag></div>
</el-card>
</el-row>
</div>
</template>
<script>
import {
unifiedOffline,
unifiedOnline,
unifiedPosition,
unifiedSend,
unifiedStatus,
unifiedStop
} from '@/api/vehicle/unified'
export default {
name: "Unified",
name: 'Unified',
data() {
return {}
return {
//
unifiedInfo: {
unifiedStatus: false,
taskName: null,
taskExecutionSum: null,
taskStartTime: null,
taskSuccessSum: null,
taskErrorSum: null
},
unifiedInfoInterval: null,
//
customColors: [
{ color: '#f56c6c', percentage: 20 },
{ color: '#e6a23c', percentage: 40 },
{ color: '#1989fa', percentage: 60 },
{ color: '#6f7ad3', percentage: 80 },
{ color: '#5cb87a', percentage: 100 }
]
}
},
created() {
},
methods: {}
methods: {
format(percentage) {
return parseFloat(percentage).toFixed(2) + '%'
},
/**
* 获取状态
*/
vehicleUnifiedStatus() {
unifiedStatus().then(response => {
this.unifiedInfo = response.data;
if (!this.unifiedInfo.unifiedStatus) {
clearInterval(this.unifiedInfoInterval);
}
})
},
/**
* 一键上线
*/
vehicleUnifiedOnline() {
unifiedOnline().then(response => {
this.$notify({
title: '操作提示',
message: response.msg,
type: response.code === 200 ? 'success' : 'error'
})
this.unifiedInfoInterval = setInterval(this.vehicleUnifiedStatus, 1000)
})
},
/**
* 一键离线
*/
vehicleUnifiedOffline() {
unifiedOffline().then(response => {
// 线
this.checkVin = null;
this.$notify({
title: '操作提示',
message: response.msg,
type: response.code === 200 ? 'success' : 'error'
})
this.unifiedInfoInterval = setInterval(this.vehicleUnifiedStatus, 1000)
})
},
/**
* 一键上报
*/
vehicleUnifiedSend() {
unifiedSend().then(response => {
this.$notify({
title: '操作提示',
message: response.msg,
type: response.code === 200 ? 'success' : 'error'
})
this.unifiedInfoInterval = setInterval(this.vehicleUnifiedStatus, 1000)
})
},
/**
* 一键上报
*/
vehicleUnifiedPosition() {
unifiedPosition().then(response => {
this.$notify({
title: '操作提示',
message: response.msg,
type: response.code === 200 ? 'success' : 'error'
})
this.unifiedInfoInterval = setInterval(this.vehicleUnifiedStatus, 1000)
})
},
/**
* 一键取消上报
*/
vehicleUnifiedStop() {
unifiedStop().then(response => {
this.$notify({
title: '操作提示',
message: response.msg,
type: response.code === 200 ? 'success' : 'error'
})
this.unifiedInfoInterval = setInterval(this.vehicleUnifiedStatus, 1000)
})
},
}
}
</script>

View File

@ -3,27 +3,7 @@
<el-row :gutter="10" style="margin-bottom: 10px;padding: 0 10px">
<el-col :span="24">
<el-button @click="addVehicleDrawer = true">添加车辆</el-button>
<el-button @click="genVehicleDialog = true" type="primary">生成车辆</el-button>
<el-button @click="vehicleUnifiedOnline" type="success">一键上线</el-button>
<el-button @click="vehicleUnifiedOffline" type="success">一键离线</el-button>
<el-button @click="vehicleUnifiedSend" type="primary">一键上报</el-button>
<el-button @click="vehicleUnifiedPosition" type="primary">一键重置路径</el-button>
<el-button @click="vehicleUnifiedStop" type="warning">一键取消上报</el-button>
<el-popover
v-if="unifiedInfo.unifiedStatus"
style="margin-left: 15px"
placement="top-start"
title="任务执行状态"
width="200"
trigger="hover">
<el-progress :percentage="(unifiedInfo.taskSuccessSum+unifiedInfo.taskErrorSum)/unifiedInfo.taskExecutionSum*100" :color="customColors"></el-progress>
<div style="width: 100%; margin: 5px 0">任务描述<el-tag>{{unifiedInfo.taskName}}</el-tag></div>
<div style="width: 100%; margin: 5px 0">任务总数<el-tag>{{unifiedInfo.taskExecutionSum}}</el-tag></div>
<div style="width: 100%; margin: 5px 0">成功总数<el-tag>{{unifiedInfo.taskSuccessSum}}</el-tag></div>
<div style="width: 100%; margin: 5px 0">失败总数<el-tag>{{unifiedInfo.taskErrorSum}}</el-tag></div>
<el-button slot="reference">有任务在执行</el-button>
</el-popover>
<el-button type="primary" @click="genVehicleDialog = true">生成车辆</el-button>
</el-col>
</el-row>
<el-row :gutter="10">
@ -31,41 +11,51 @@
<el-row :gutter="10" style="height: 100px;">
<el-row :gutter="10" style="margin-bottom: 10px;padding: 0 10px">
<el-col :span="6">
<el-input v-model="queryParams.vin" prefix-icon="el-icon-search" placeholder="VIN检索(模糊)"></el-input>
<el-input v-model="queryParams.vin" prefix-icon="el-icon-search" placeholder="VIN检索(模糊)" />
</el-col>
<el-col :span="6">
<el-switch style="margin: 9px 0;"
<el-switch
v-model="queryParams.online"
style="margin: 9px 0;"
active-color="#13ce66"
inactive-text="上线优先展示">
</el-switch>
inactive-text="上线优先展示"
/>
</el-col>
</el-row>
<el-row :gutter="10" style="margin-bottom: 10px;padding: 0 10px">
<el-pagination
@size-change="pageSizeChange"
@current-change="pageChange"
:current-page="queryParams.page"
:page-sizes="[10, 20, 30, 50, 100]"
:page-size="queryParams.pageSize"
layout="total, sizes, prev, pager, next, jumper"
:total="vehiclePage.total">
</el-pagination>
:total="vehiclePage.total"
@size-change="pageSizeChange"
@current-change="pageChange"
/>
</el-row>
</el-row>
<div class="grid-content bg-purple" :style="{'height': contentHeight - 150 +'px'}">
<el-row :gutter="10">
<el-col :span="12" v-for="vehicle in vehiclePage.rows" style="margin: 0 0 10px 0;">
<el-col v-for="vehicle in vehiclePage.rows" :span="12" style="margin: 0 0 10px 0;">
<el-card class="box-card">
<div slot="header" class="clearfix">
<el-tag :type="!vehicle.online ? 'info' : 'success'" style="padding-left: 0; padding-right: 0">
{{ vehicle.vin }}
</el-tag>
<el-button style="float: right;" type="danger"
@click="vehicleRemove(vehicle.vin)" size="mini">删除</el-button>
<el-button
style="float: right;"
type="danger"
size="mini"
@click="vehicleRemove(vehicle.vin)"
>删除</el-button>
<span style="float: right; color: rgba(255,255,255,0)">|</span>
<el-button style="float: right;" :type="checkVin === vehicle.vin ? 'success' : ''"
@click="checkVin = vehicle.vin" size="mini" :disabled="!vehicle.online">{{checkVin === vehicle.vin ? "已选择" : "选择"}}</el-button>
<el-button
style="float: right;"
:type="checkVin === vehicle.vin ? 'success' : ''"
size="mini"
:disabled="!vehicle.online"
@click="checkVin = vehicle.vin"
>{{ checkVin === vehicle.vin ? "已选择" : "选择" }}</el-button>
<span style="float: right; color: rgba(255,255,255,0)">|</span>
<el-button v-if="!vehicle.online" style="float: right;" size="mini" @click="clientInit(vehicle.vin)">
上线
@ -76,35 +66,35 @@
</div>
<el-descriptions class="margin-top" :column="1" size="mini" border>
<el-descriptions-item>
<template slot="label"> <i class="el-icon-discover"></i> 路线 </template>
<template slot="label"> <i class="el-icon-discover" /> 路线 </template>
<el-radio-group v-model="vehicle.positionCode" size="mini" @input="checkPositionCode(vehicle)">
<el-radio-button v-for="positionCode in positionCodeList" :label="positionCode"></el-radio-button>
<el-radio-button v-for="positionCode in positionCodeList" :label="positionCode" />
</el-radio-group>
<el-tag style="margin-left: 15px;" type="success">{{vehicle.positionLength}}</el-tag>
<el-tag style="margin-left: 15px;" type="success">{{ vehicle.positionLength }}</el-tag>
</el-descriptions-item>
<el-descriptions-item>
<template slot="label"> <i class="el-icon-location-outline"></i> 档位 </template>
<el-radio-group size="mini" v-model="vehicle.gear" @input="checkGear(vehicle)">
<el-radio-button label="P"></el-radio-button>
<el-radio-button label="D"></el-radio-button>
<template slot="label"> <i class="el-icon-location-outline" /> 档位 </template>
<el-radio-group v-model="vehicle.gear" size="mini" @input="checkGear(vehicle)">
<el-radio-button label="P" />
<el-radio-button label="D" />
</el-radio-group>
</el-descriptions-item>
<el-descriptions-item>
<template slot="label"> <i class="el-icon-mobile-phone"></i> 报文上报 </template>
<el-radio-group size="mini" v-model="vehicle.msgCode" @input="checkMsg(vehicle)">
<el-radio-button label="上报"></el-radio-button>
<el-radio-button label="暂停"></el-radio-button>
<el-radio-button label="停止"></el-radio-button>
<template slot="label"> <i class="el-icon-mobile-phone" /> 报文上报 </template>
<el-radio-group v-model="vehicle.msgCode" size="mini" @input="checkMsg(vehicle)">
<el-radio-button label="上报" />
<el-radio-button label="暂停" />
<el-radio-button label="停止" />
</el-radio-group>
</el-descriptions-item>
<el-descriptions-item>
<template slot="label"> <i class="el-icon-tickets"></i> 总里程 </template>
<el-tag size="small">{{vehicle.mileage}}/KM</el-tag>
<template slot="label"> <i class="el-icon-tickets" /> 总里程 </template>
<el-tag size="small">{{ vehicle.mileage }}/KM</el-tag>
</el-descriptions-item>
<el-descriptions-item>
<template slot="label">
<i class="el-icon-office-building"></i>
<i class="el-icon-office-building" />
联系地址
</template>
江苏省苏州市吴中区吴中大道 1188
@ -117,49 +107,49 @@
</div>
</el-col>
<el-col :span="14">
<el-empty v-if="checkVin == null" description="请在左侧选择需要查看数据的车辆"></el-empty>
<el-empty v-if="checkVin == null" description="请在左侧选择需要查看数据的车辆" />
<div v-if="checkVin != null" class="grid-content bg-purple" :style="{'height': contentHeight+'px'}">
<div class="contentMain" :style="{'height': (contentHeight / 2 - 10) + 'px', 'width': '100%'}">
<el-row :gutter="10" >
<el-form ref="form" labelPosition="top" :model="vehicleData">
<el-row :gutter="10">
<el-form ref="form" label-position="top" :model="vehicleData">
<el-col :span="12">
<div :style="{'height': (contentHeight / 2 - 10) + 'px', 'width': '100%', 'background-color': '#FFFFFF'}">
<el-tabs tab-position="top" type="border-card" :style="{'height': (contentHeight / 2 - 10) + 'px'}">
<el-tab-pane label="基本信息"> <div class="vehicleDataTab" :style="{'height': (contentHeight / 2 - 80) + 'px'}">
<el-row :gutter="10">
<el-col :span="12"> <el-form-item label="车速"> <el-input v-model="vehicleData.speed" disabled></el-input></el-form-item> </el-col>
<el-col :span="12"> <el-form-item label="总电压"> <el-input v-model="vehicleData.voltage" disabled></el-input></el-form-item> </el-col>
<el-col :span="12"> <el-form-item label="总电流"> <el-input v-model="vehicleData.current" disabled></el-input></el-form-item> </el-col>
<el-col :span="12"> <el-form-item label="绝缘电阻"> <el-input v-model="vehicleData.resistance" disabled></el-input></el-form-item> </el-col>
<el-col :span="12"> <el-form-item label="加速踏板行程值"> <el-input v-model="vehicleData.accelerationPedal" disabled></el-input></el-form-item> </el-col>
<el-col :span="12"> <el-form-item label="制动踏板行程值"> <el-input v-model="vehicleData.brakePedal" disabled></el-input></el-form-item> </el-col>
<el-col :span="12"> <el-form-item label="燃料消耗率"> <el-input v-model="vehicleData.fuelConsumptionRate" disabled></el-input></el-form-item> </el-col>
<el-col :span="12"> <el-form-item label="车速"> <el-input v-model="vehicleData.speed" disabled /></el-form-item> </el-col>
<el-col :span="12"> <el-form-item label="总电压"> <el-input v-model="vehicleData.voltage" disabled /></el-form-item> </el-col>
<el-col :span="12"> <el-form-item label="总电流"> <el-input v-model="vehicleData.current" disabled /></el-form-item> </el-col>
<el-col :span="12"> <el-form-item label="绝缘电阻"> <el-input v-model="vehicleData.resistance" disabled /></el-form-item> </el-col>
<el-col :span="12"> <el-form-item label="加速踏板行程值"> <el-input v-model="vehicleData.accelerationPedal" disabled /></el-form-item> </el-col>
<el-col :span="12"> <el-form-item label="制动踏板行程值"> <el-input v-model="vehicleData.brakePedal" disabled /></el-form-item> </el-col>
<el-col :span="12"> <el-form-item label="燃料消耗率"> <el-input v-model="vehicleData.fuelConsumptionRate" disabled /></el-form-item> </el-col>
</el-row>
</div> </el-tab-pane>
<el-tab-pane label="电机"> <div class="vehicleDataTab" :style="{'height': (contentHeight / 2 - 80) + 'px'}">
<el-row :gutter="10">
<el-col :span="12"> <el-form-item label="电机控制器温度"> <el-input v-model="vehicleData.motorControllerTemperature" disabled></el-input></el-form-item> </el-col>
<el-col :span="12"> <el-form-item label="电机转速"> <el-input v-model="vehicleData.motorSpeed" disabled></el-input></el-form-item> </el-col>
<el-col :span="12"> <el-form-item label="电机转矩"> <el-input v-model="vehicleData.motorTorque" disabled></el-input></el-form-item> </el-col>
<el-col :span="12"> <el-form-item label="电机温度"> <el-input v-model="vehicleData.motorTemperature" disabled></el-input></el-form-item> </el-col>
<el-col :span="12"> <el-form-item label="电机电压"> <el-input v-model="vehicleData.motorVoltage" disabled></el-input></el-form-item> </el-col>
<el-col :span="12"> <el-form-item label="电机电流"> <el-input v-model="vehicleData.motorCurrent" disabled></el-input></el-form-item> </el-col>
<el-col :span="12"> <el-form-item label="电机控制器温度"> <el-input v-model="vehicleData.motorControllerTemperature" disabled /></el-form-item> </el-col>
<el-col :span="12"> <el-form-item label="电机转速"> <el-input v-model="vehicleData.motorSpeed" disabled /></el-form-item> </el-col>
<el-col :span="12"> <el-form-item label="电机转矩"> <el-input v-model="vehicleData.motorTorque" disabled /></el-form-item> </el-col>
<el-col :span="12"> <el-form-item label="电机温度"> <el-input v-model="vehicleData.motorTemperature" disabled /></el-form-item> </el-col>
<el-col :span="12"> <el-form-item label="电机电压"> <el-input v-model="vehicleData.motorVoltage" disabled /></el-form-item> </el-col>
<el-col :span="12"> <el-form-item label="电机电流"> <el-input v-model="vehicleData.motorCurrent" disabled /></el-form-item> </el-col>
</el-row>
</div> </el-tab-pane>
<el-tab-pane label="动力电池"> <div class="vehicleDataTab" :style="{'height': (contentHeight / 2 - 80) + 'px'}">
<el-row :gutter="10">
<el-col :span="12"> <el-form-item label="动力电池剩余电量SOC"> <el-input v-model="vehicleData.remainingBattery" disabled></el-input></el-form-item> </el-col>
<el-col :span="12"> <el-form-item label="电池总容量"> <el-input v-model="vehicleData.batteryLevel" disabled></el-input></el-form-item> </el-col>
<el-col :span="12"> <el-form-item label="当前状态允许的最大反馈功率"> <el-input v-model="vehicleData.maximumFeedbackPower" disabled></el-input></el-form-item> </el-col>
<el-col :span="12"> <el-form-item label="当前状态允许最大放电功率"> <el-input v-model="vehicleData.maximumDischargePower" disabled></el-input></el-form-item> </el-col>
<el-col :span="12"> <el-form-item label="BMS自检计数器"> <el-input v-model="vehicleData.selfCheckCounter" disabled></el-input></el-form-item> </el-col>
<el-col :span="12"> <el-form-item label="动力电池充放电电流"> <el-input v-model="vehicleData.totalBatteryCurrent" disabled></el-input></el-form-item> </el-col>
<el-col :span="12"> <el-form-item label="动力电池负载端总电压V3"> <el-input v-model="vehicleData.totalBatteryVoltage" disabled></el-input></el-form-item> </el-col>
<el-col :span="12"> <el-form-item label="单次最大电压"> <el-input v-model="vehicleData.singleBatteryMaxVoltage" disabled></el-input></el-form-item> </el-col>
<el-col :span="12"> <el-form-item label="单体电池最低电压"> <el-input v-model="vehicleData.singleBatteryMinVoltage" disabled></el-input></el-form-item> </el-col>
<el-col :span="12"> <el-form-item label="单体电池最高温度"> <el-input v-model="vehicleData.singleBatteryMaxTemperature" disabled></el-input></el-form-item> </el-col>
<el-col :span="12"> <el-form-item label="单体电池最低温度"> <el-input v-model="vehicleData.singleBatteryMinTemperature" disabled></el-input></el-form-item> </el-col>
<el-col :span="12"> <el-form-item label="动力电池可用容量"> <el-input v-model="vehicleData.availableBatteryCapacity" disabled></el-input></el-form-item> </el-col>
<el-col :span="12"> <el-form-item label="动力电池剩余电量SOC"> <el-input v-model="vehicleData.remainingBattery" disabled /></el-form-item> </el-col>
<el-col :span="12"> <el-form-item label="电池总容量"> <el-input v-model="vehicleData.batteryLevel" disabled /></el-form-item> </el-col>
<el-col :span="12"> <el-form-item label="当前状态允许的最大反馈功率"> <el-input v-model="vehicleData.maximumFeedbackPower" disabled /></el-form-item> </el-col>
<el-col :span="12"> <el-form-item label="当前状态允许最大放电功率"> <el-input v-model="vehicleData.maximumDischargePower" disabled /></el-form-item> </el-col>
<el-col :span="12"> <el-form-item label="BMS自检计数器"> <el-input v-model="vehicleData.selfCheckCounter" disabled /></el-form-item> </el-col>
<el-col :span="12"> <el-form-item label="动力电池充放电电流"> <el-input v-model="vehicleData.totalBatteryCurrent" disabled /></el-form-item> </el-col>
<el-col :span="12"> <el-form-item label="动力电池负载端总电压V3"> <el-input v-model="vehicleData.totalBatteryVoltage" disabled /></el-form-item> </el-col>
<el-col :span="12"> <el-form-item label="单次最大电压"> <el-input v-model="vehicleData.singleBatteryMaxVoltage" disabled /></el-form-item> </el-col>
<el-col :span="12"> <el-form-item label="单体电池最低电压"> <el-input v-model="vehicleData.singleBatteryMinVoltage" disabled /></el-form-item> </el-col>
<el-col :span="12"> <el-form-item label="单体电池最高温度"> <el-input v-model="vehicleData.singleBatteryMaxTemperature" disabled /></el-form-item> </el-col>
<el-col :span="12"> <el-form-item label="单体电池最低温度"> <el-input v-model="vehicleData.singleBatteryMinTemperature" disabled /></el-form-item> </el-col>
<el-col :span="12"> <el-form-item label="动力电池可用容量"> <el-input v-model="vehicleData.availableBatteryCapacity" disabled /></el-form-item> </el-col>
</el-row>
</div> </el-tab-pane>
</el-tabs>
@ -203,8 +193,7 @@
</el-form>
</el-row>
</div>
<div class="contentMain" :style="{'height': (contentHeight / 2 - 10) + 'px', 'width': '100%', 'background-color': '#FFFFFF'}">
</div>
<div class="contentMain" :style="{'height': (contentHeight / 2 - 10) + 'px', 'width': '100%', 'background-color': '#FFFFFF'}" />
</div>
</el-col>
</el-row>
@ -212,17 +201,18 @@
title="添加车辆"
:visible.sync="addVehicleDrawer"
direction="ltr"
size="50%">
size="50%"
>
<el-row>
<el-col :span="22" :offset="1">
<h3 style="color: red">一行一个VIN多VIN进行换行</h3>
<el-form ref="form" :model="addForm" label-position="top" label-width="80px">
<el-form-item label="车辆VIN">
<el-input type="textarea" :rows="35" v-model="addForm.vinStr"></el-input>
<el-input v-model="addForm.vinStr" type="textarea" :rows="35" />
</el-form-item>
<el-form-item>
<el-button type="primary" @click="vehicleCreate"></el-button>
<el-button>取消</el-button>
<el-button @click="addVehicleDrawer = false">取消</el-button>
</el-form-item>
</el-form>
</el-col>
@ -231,13 +221,19 @@
<el-dialog
title="生成车辆"
:visible.sync="genVehicleDialog"
width="30%">
width="30%"
>
<el-row>
<el-col :offset="1" :span="22">
<el-form ref="form" :model="genForm" label-position="top" label-width="80px">
<el-form-item label="生成车辆数量 最高99999">
<el-input-number v-model="genForm.number" style="width: 100%" controls-position="right"
:min="1" :max="99999"></el-input-number>
<el-input-number
v-model="genForm.number"
style="width: 100%"
controls-position="right"
:min="1"
:max="99999"
/>
</el-form-item>
</el-form>
</el-col>
@ -258,9 +254,9 @@ import {
instanceClientInit, instanceData,
instanceGear,
instanceList,
instanceMsg, unifiedOffline, unifiedOnline, unifiedPosition, unifiedSend, unifiedStatus, unifiedStop
instanceMsg
} from '@/api/vehicle/instance'
import {positionList} from "@/api/vehicle/position";
import { positionList } from '@/api/vehicle/position'
import { create, gen, remove } from '@/api/vehicle/vehicle'
export default {
@ -300,114 +296,22 @@ export default {
//
genForm: {
number: 0
},
//
unifiedInfo: {
unifiedStatus: false,
taskName: null,
taskExecutionSum: null,
taskStartTime: null,
taskSuccessSum: null,
taskErrorSum: null
},
unifiedInfoInterval: null,
//
customColors: [
{ color: '#f56c6c', percentage: 20 },
{ color: '#e6a23c', percentage: 40 },
{ color: '#1989fa', percentage: 60 },
{ color: '#6f7ad3', percentage: 80 },
{ color: '#5cb87a', percentage: 100 }
]
}
}
},
created() {
this.contentHeight = window.innerHeight - 60;
this.initInstanceList();
this.initPositionList();
this.intervalVehicleDataContinued = setInterval(this.vehicleDataContinued, 1000);
this.contentHeight = window.innerHeight - 60
this.initInstanceList()
this.initPositionList()
},
methods: {
/**
* 获取状态
*/
vehicleUnifiedStatus() {
unifiedStatus().then(response => {
this.unifiedInfo = response.data;
if (!this.unifiedInfo.unifiedStatus){
clearInterval(this.unifiedInfoInterval);
}
})
},
/**
* 一键上线
*/
vehicleUnifiedOnline(){
unifiedOnline().then(response => {
this.$notify({
title: '操作提示',
message: response.msg,
type: response.code === 200 ? 'success' : 'error'
})
this.unifiedInfoInterval = setInterval(this.vehicleUnifiedStatus, 100)
})
},
/**
* 一键离线
*/
vehicleUnifiedOffline(){
unifiedOffline().then(response => {
// 线
this.checkVin = null;
this.$notify({
title: '操作提示',
message: response.msg,
type: response.code === 200 ? 'success' : 'error'
})
})
},
/**
* 一键上报
*/
vehicleUnifiedSend(){
unifiedSend().then(response => {
this.$notify({
title: '操作提示',
message: response.msg,
type: response.code === 200 ? 'success' : 'error'
})
})
},
/**
* 一键上报
*/
vehicleUnifiedPosition(){
unifiedPosition().then(response => {
this.$notify({
title: '操作提示',
message: response.msg,
type: response.code === 200 ? 'success' : 'error'
})
})
},
/**
* 一键取消上报
*/
vehicleUnifiedStop(){
unifiedStop().then(response => {
this.$notify({
title: '操作提示',
message: response.msg,
type: response.code === 200 ? 'success' : 'error'
})
})
},
/**
* 选择每页数量
* @param val
*/
pageSizeChange(val) {
this.queryParams.pageSize = val;
this.queryParams.pageSize = val
this.getInstanceList()
},
/**
@ -415,15 +319,15 @@ export default {
* @param val
*/
pageChange(val) {
this.queryParams.page = val;
this.queryParams.page = val
this.getInstanceList()
},
/**
* 车辆生成
*/
vehicleGen(){
vehicleGen() {
gen(this.genForm.number).then(response => {
this.genVehicleDialog = false;
this.genVehicleDialog = false
this.$notify({
title: '操作提示',
message: response.msg,
@ -434,9 +338,9 @@ export default {
/**
* 车辆添加
*/
vehicleCreate(){
vehicleCreate() {
create(this.addForm).then(response => {
this.addVehicleDrawer = false;
this.addVehicleDrawer = false
this.$notify({
title: '操作提示',
message: response.msg,
@ -447,7 +351,7 @@ export default {
/**
* 车辆删除
*/
vehicleRemove(vin){
vehicleRemove(vin) {
remove(vin).then(response => {
this.getInstanceList()
this.$notify({
@ -461,8 +365,8 @@ export default {
/**
* 获取车辆数据
*/
vehicleDataContinued(){
if (this.checkVin != null){
vehicleDataContinued() {
if (this.checkVin != null) {
instanceData(this.checkVin).then(response => {
this.vehicleData = response.data
})
@ -488,7 +392,7 @@ export default {
*/
checkGear(vehicle) {
instanceGear(vehicle.vin, vehicle.gear).then(response => {
this.getInstanceList();
this.getInstanceList()
this.$notify({
title: '操作提示',
message: response.msg,
@ -502,7 +406,7 @@ export default {
*/
checkMsg(vehicle) {
instanceMsg(vehicle.vin, vehicle.msgCode).then(response => {
this.getInstanceList();
this.getInstanceList()
this.$notify({
title: '操作提示',
message: response.msg,
@ -516,7 +420,7 @@ export default {
*/
checkPositionCode(vehicle) {
instanceCheckPosition(vehicle.vin, vehicle.positionCode).then(response => {
this.getInstanceList();
this.getInstanceList()
this.$notify({
title: '操作提示',
message: response.msg,
@ -527,26 +431,26 @@ export default {
/**
* 初始化路径
*/
initPositionList(){
initPositionList() {
positionList().then(response => {
this.positionCodeList = response.data;
this.positionCodeList = response.data
})
},
/**
* 初始化车辆列表
*/
initInstanceList(){
initInstanceList() {
//
this.getInstanceList()
//
this.intervalInstanceList = setInterval(this.getInstanceList, 3000);
this.intervalInstanceList = setInterval(this.getInstanceList, 3000)
},
/**
* 获取车辆列表
*/
getInstanceList() {
instanceList(this.queryParams).then(response => {
this.vehiclePage = response.data;
this.vehiclePage = response.data
})
},
@ -554,9 +458,9 @@ export default {
* 初始化车机
* @param vin
*/
clientInit(vin){
clientInit(vin) {
instanceClientInit(vin).then(response => {
this.getInstanceList();
this.getInstanceList()
this.$notify({
title: '操作提示',
message: response.msg,
@ -568,11 +472,11 @@ export default {
* 关闭车机
* @param vin
*/
clientClose(vin){
clientClose(vin) {
instanceClientClose(vin).then(response => {
this.getInstanceList();
this.getInstanceList()
// 线
if (vin === this.checkVin){
if (vin === this.checkVin) {
this.checkVin = null
}
this.$notify({