|
@@ -2,76 +2,76 @@
|
|
|
<div>
|
|
|
<div class="box-first">
|
|
|
<div class="video-box">
|
|
|
- <canvas id="video-1"></canvas>
|
|
|
+ <canvas id="video-1" />
|
|
|
</div>
|
|
|
<div class="infolist">
|
|
|
<div class="userlist">
|
|
|
<ul>
|
|
|
<li>
|
|
|
- <UserItem title="用户名信息" name="USER INFORMATION"></UserItem>
|
|
|
+ <UserItem title="用户名信息" name="USER INFORMATION" />
|
|
|
<label>驾驶员</label>
|
|
|
- <pannel-item :value="driverInfo.name"></pannel-item>
|
|
|
+ <pannel-item :value="driverInfo.name" />
|
|
|
<label>联系方式</label>
|
|
|
- <pannel-item :value="driverInfo.mobile"></pannel-item>
|
|
|
+ <pannel-item :value="driverInfo.mobile" />
|
|
|
<label>身份证号</label>
|
|
|
- <pannel-item :value="driverInfo.cardNum"></pannel-item>
|
|
|
+ <pannel-item :value="driverInfo.cardNum" />
|
|
|
<label>所属车队</label>
|
|
|
- <pannel-item :value="driverInfo.motorcade"></pannel-item>
|
|
|
+ <pannel-item :value="driverInfo.motorcade" />
|
|
|
</li>
|
|
|
<li>
|
|
|
- <UserItem title="车辆信息" name="VEHICLE INFORMATION"></UserItem>
|
|
|
+ <UserItem title="车辆信息" name="VEHICLE INFORMATION" />
|
|
|
<span>
|
|
|
<label>车辆VIN码</label><label>{{ Carlink }}</label>
|
|
|
</span>
|
|
|
- <pannel-item :value="vehicleInfo.vin"></pannel-item>
|
|
|
+ <pannel-item :value="vehicleInfo.vin" />
|
|
|
<div class="carinfo">
|
|
|
<p>
|
|
|
<label>车牌号</label>
|
|
|
- <pannel-item :value="vehicleInfo.plate"></pannel-item>
|
|
|
+ <pannel-item :value="vehicleInfo.plate" />
|
|
|
</p>
|
|
|
<p>
|
|
|
<label>解锁状态</label>
|
|
|
- <pannel-item :value="Carlock"></pannel-item>
|
|
|
+ <pannel-item :value="Carlock" />
|
|
|
</p>
|
|
|
</div>
|
|
|
<div class="carinfo">
|
|
|
<p>
|
|
|
<label>累计里程 (km)</label>
|
|
|
- <pannel-item :value="vehicleInfo.mileage"></pannel-item>
|
|
|
+ <pannel-item :value="vehicleInfo.mileage" />
|
|
|
</p>
|
|
|
<p>
|
|
|
<label>上电状态</label>
|
|
|
- <pannel-item :value="Carbattery"></pannel-item>
|
|
|
+ <pannel-item :value="Carbattery" />
|
|
|
</p>
|
|
|
</div>
|
|
|
|
|
|
<label>累计换电 (次)</label>
|
|
|
- <pannel-item :value="vehicleInfo.swap"></pannel-item>
|
|
|
+ <pannel-item :value="vehicleInfo.swap" />
|
|
|
</li>
|
|
|
<li>
|
|
|
- <UserItem title="电池信息" name="Battery INFORMATION"></UserItem>
|
|
|
+ <UserItem title="电池信息" name="Battery INFORMATION" />
|
|
|
<label>电池编号</label>
|
|
|
- <pannel-item :value="batteryInfo.sn"></pannel-item>
|
|
|
+ <pannel-item :value="batteryInfo.sn" />
|
|
|
<label>电池仓</label>
|
|
|
- <pannel-item :value="batteryInfo.space"></pannel-item>
|
|
|
+ <pannel-item :value="batteryInfo.space" />
|
|
|
<div class="carinfo">
|
|
|
<P>
|
|
|
<label>换电电池SOC</label>
|
|
|
- <pannel-item :value="batteryInfo.swapSoc"></pannel-item>
|
|
|
+ <pannel-item :value="batteryInfo.swapSoc" />
|
|
|
</P>
|
|
|
<P>
|
|
|
<label>车辆电池SOC</label>
|
|
|
- <pannel-item :value="batteryInfo.vehSoc"></pannel-item>
|
|
|
+ <pannel-item :value="batteryInfo.vehSoc" />
|
|
|
</P>
|
|
|
</div>
|
|
|
<label>换电量(kWh)</label>
|
|
|
- <pannel-item :value="batteryInfo.space"></pannel-item>
|
|
|
+ <pannel-item :value="batteryInfo.space" />
|
|
|
</li>
|
|
|
</ul>
|
|
|
<div class="bin-info">
|
|
|
- <!--
|
|
|
+ <!--
|
|
|
* @step:动画步骤
|
|
|
- * @BatteryOnCar:控制车上亏电电池是否亮起
|
|
|
+ * @BatteryOnCar:控制车上亏电电池是否亮起
|
|
|
* @storeInfoList:充电仓电池列表
|
|
|
* @swapCode:换电电池编号
|
|
|
* @connectionState:车站连接状态 1已连接 0断开连接
|
|
@@ -79,14 +79,14 @@
|
|
|
* @swapSoc:绿电池缓存SOC,
|
|
|
-->
|
|
|
<BinInfomation
|
|
|
- :BatteryOnCar="swapAnimationVo.soc"
|
|
|
- :storeInfoList="storeInfoList"
|
|
|
- :swapCode="swapAnimationVo.swapCode*1"
|
|
|
+ :battery-on-car="swapAnimationVo.soc"
|
|
|
+ :store-info-list="storeInfoList"
|
|
|
+ :swap-code="swapAnimationVo.swapCode*1-1"
|
|
|
:step="swapAnimationVo.step"
|
|
|
- :connectionState="swapAnimationVo.connectionState"
|
|
|
- :swapSoc="swapAnimationVo.swapSoc"
|
|
|
- :swapCurrent="swapAnimationVo.swapCurrent"
|
|
|
- ></BinInfomation>
|
|
|
+ :connection-state="swapAnimationVo.connectionState"
|
|
|
+ :swap-soc="swapAnimationVo.swapSoc"
|
|
|
+ :swap-current="swapAnimationVo.swapCurrent"
|
|
|
+ />
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
@@ -95,16 +95,17 @@
|
|
|
<sub-title
|
|
|
name="换电业务流程"
|
|
|
statement="power exchange business process"
|
|
|
- ></sub-title>
|
|
|
+ />
|
|
|
<process-symbol
|
|
|
:processtext="processtext"
|
|
|
- :processDone="processDone"
|
|
|
- ></process-symbol>
|
|
|
+ :process-done="processDone"
|
|
|
+ />
|
|
|
<div class="process-details">
|
|
|
- <div class="detail" v-for="(item, index) in processDone" :key="index">
|
|
|
+ <div v-for="(item, index) in processDone" :key="index" class="detail">
|
|
|
<span
|
|
|
class="process-state"
|
|
|
- :style="{color: item === true ? 'rgb(4,220,223)' : 'rgb(69,85,115)',}">
|
|
|
+ :style="{color: item === true ? 'rgb(4,220,223)' : 'rgb(69,85,115)',}"
|
|
|
+ >
|
|
|
<div v-if="swapProcess.validation === null && index === 0">待验证</div>
|
|
|
<div v-else-if="swapProcess.validation && index === 0">
|
|
|
{{ swapProcess.validation }}
|
|
@@ -132,52 +133,52 @@
|
|
|
</span>
|
|
|
<quarter-change
|
|
|
:percent="percent[index]"
|
|
|
- :processDeg="processDeg[index]"
|
|
|
- :isDone="item"
|
|
|
+ :process-deg="processDeg[index]"
|
|
|
+ :is-done="item"
|
|
|
:image="processImages[index]"
|
|
|
- ></quarter-change>
|
|
|
+ />
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
<div class="box-three">
|
|
|
<div class="exchange-statistics">
|
|
|
- <sub-title name="换电信息" statement="Power Change Details"></sub-title>
|
|
|
+ <sub-title name="换电信息" statement="Power Change Details" />
|
|
|
<div class="statistic-boxes">
|
|
|
<statistic-item
|
|
|
label="今日换电次数"
|
|
|
:value="swapInfo.todaySwapFreq"
|
|
|
unit="次"
|
|
|
- ></statistic-item>
|
|
|
+ />
|
|
|
<statistic-item
|
|
|
label="今日换电量"
|
|
|
:value="swapInfo.todayCapacity"
|
|
|
unit="kWh"
|
|
|
- ></statistic-item>
|
|
|
+ />
|
|
|
<statistic-item
|
|
|
label="累计换电次数"
|
|
|
:value="swapInfo.swapFreq"
|
|
|
unit="次"
|
|
|
- ></statistic-item>
|
|
|
+ />
|
|
|
<statistic-item
|
|
|
label="累计换电量"
|
|
|
:value="swapInfo.capacity"
|
|
|
unit="kWh"
|
|
|
- ></statistic-item>
|
|
|
+ />
|
|
|
<statistic-item
|
|
|
label="当前可换电池"
|
|
|
:value="swapInfo.quantity"
|
|
|
unit="块"
|
|
|
- ></statistic-item>
|
|
|
+ />
|
|
|
<statistic-item
|
|
|
label="今日告警数"
|
|
|
:value="swapInfo.todayAlarmFreq"
|
|
|
unit="次"
|
|
|
- ></statistic-item>
|
|
|
+ />
|
|
|
</div>
|
|
|
</div>
|
|
|
|
|
|
<div class="exchange-records">
|
|
|
- <sub-title name="换电记录" statement="Exchange Records"></sub-title>
|
|
|
+ <sub-title name="换电记录" statement="Exchange Records" />
|
|
|
<div class="exchange-details">
|
|
|
<div class="header-row">
|
|
|
<span class="v-plate">车牌号</span>
|
|
@@ -185,7 +186,7 @@
|
|
|
<span class="v-power">换电量</span>
|
|
|
<span class="v-time">换电时间</span>
|
|
|
</div>
|
|
|
- <div class="record-row" v-for="item in carRecord" :key="item.id">
|
|
|
+ <div v-for="item in carRecord" :key="item.id" class="record-row">
|
|
|
<span class="v-plate">{{ item.vehiclePlate }}</span>
|
|
|
<span class="v-type">{{ item.modelName }}</span>
|
|
|
<span class="v-power color-blue">{{ item.swapCapacity }}</span>
|
|
@@ -195,21 +196,17 @@
|
|
|
</div>
|
|
|
|
|
|
<div class="gate-details">
|
|
|
- <sub-title name="告警记录" statement="ALARM LOG"></sub-title>
|
|
|
+ <sub-title name="告警记录" statement="ALARM LOG" />
|
|
|
<div class="recordlist">
|
|
|
<div class="recordtilte">
|
|
|
- <span>告警代码</span><span>告警设备</span><span>告警信息</span
|
|
|
- ><span>告警时间</span>
|
|
|
+ <span>告警代码</span><span>告警设备</span><span>告警信息</span><span>告警时间</span>
|
|
|
</div>
|
|
|
<div
|
|
|
- class="recordinfo"
|
|
|
v-for="item in alarmRecordList"
|
|
|
:key="item.id"
|
|
|
+ class="recordinfo"
|
|
|
>
|
|
|
- <span>{{ item.code }}</span
|
|
|
- ><span>{{ item.equipment }}</span
|
|
|
- ><span>{{ item.info }}</span
|
|
|
- ><span>{{ item.beginTime }}</span>
|
|
|
+ <span>{{ item.code }}</span><span>{{ item.equipment }}</span><span>{{ item.info }}</span><span>{{ item.beginTime }}</span>
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
@@ -218,19 +215,19 @@
|
|
|
</template>
|
|
|
|
|
|
<script>
|
|
|
-import { swapInfo, swapRecord, alarmRecord } from "@/api/powerCharge";
|
|
|
-import wsUrl from "../../../vue.config.js";
|
|
|
-import UserItem from "./components/UserItem.vue";
|
|
|
-import PannelItem from "./components/PannelItem.vue";
|
|
|
-import BinInfomation from "./components/BinInfomation.vue";
|
|
|
-import SubTitle from "./components/SubTitle.vue";
|
|
|
-import ProcessSymbol from "./components/ProcessSymbol.vue";
|
|
|
-import QuarterChange from "./components/QuarterChange.vue";
|
|
|
-import StatisticItem from "./components/StatisticItem.vue";
|
|
|
-import "../../utils/jsmpeg.min";
|
|
|
-import { getToken} from '@/utils/auth'
|
|
|
+import { swapInfo, swapRecord, alarmRecord } from '@/api/powerCharge'
|
|
|
+import wsUrl from '../../../vue.config.js'
|
|
|
+import UserItem from './components/UserItem.vue'
|
|
|
+import PannelItem from './components/PannelItem.vue'
|
|
|
+import BinInfomation from './components/BinInfomation.vue'
|
|
|
+import SubTitle from './components/SubTitle.vue'
|
|
|
+import ProcessSymbol from './components/ProcessSymbol.vue'
|
|
|
+import QuarterChange from './components/QuarterChange.vue'
|
|
|
+import StatisticItem from './components/StatisticItem.vue'
|
|
|
+import '../../utils/jsmpeg.min'
|
|
|
+import { getToken } from '@/utils/auth'
|
|
|
export default {
|
|
|
- name: "PowerChangeMonitoring",
|
|
|
+ name: 'PowerChangeMonitoring',
|
|
|
components: {
|
|
|
UserItem,
|
|
|
PannelItem,
|
|
@@ -238,285 +235,291 @@ export default {
|
|
|
SubTitle,
|
|
|
ProcessSymbol,
|
|
|
QuarterChange,
|
|
|
- StatisticItem,
|
|
|
+ StatisticItem
|
|
|
},
|
|
|
data() {
|
|
|
return {
|
|
|
ws: null,
|
|
|
- //司机信息
|
|
|
+ // 司机信息
|
|
|
driverInfo: {
|
|
|
- name: "—",
|
|
|
- mobile: "—",
|
|
|
- cardNum: "—",
|
|
|
- motorcade: "—",
|
|
|
+ name: '—',
|
|
|
+ mobile: '—',
|
|
|
+ cardNum: '—',
|
|
|
+ motorcade: '—'
|
|
|
},
|
|
|
- //车辆信息开始
|
|
|
+ // 车辆信息开始
|
|
|
vehicleInfo: {
|
|
|
- vin: "—",
|
|
|
- plate: "—",
|
|
|
- lockState: "—",
|
|
|
- mileage: "—",
|
|
|
- batteryState: "—",
|
|
|
- swap: "—",
|
|
|
- conState: 0,
|
|
|
+ vin: '—',
|
|
|
+ plate: '—',
|
|
|
+ lockState: '—',
|
|
|
+ mileage: '—',
|
|
|
+ batteryState: '—',
|
|
|
+ swap: '—',
|
|
|
+ conState: 0
|
|
|
},
|
|
|
batteryInfo: {
|
|
|
- sn: "—",
|
|
|
- vehSoc: "—",
|
|
|
- space: "—",
|
|
|
- swapSoc: "—",
|
|
|
- swapCapacity: "—",
|
|
|
+ sn: '—',
|
|
|
+ vehSoc: '—',
|
|
|
+ space: '—',
|
|
|
+ swapSoc: '—',
|
|
|
+ swapCapacity: '—'
|
|
|
},
|
|
|
- //电池动画
|
|
|
- swapAnimationVo:{
|
|
|
- step:1,//动画步骤
|
|
|
- soc:30,//车上电池SOC
|
|
|
- transitCode:null,//中转仓编号
|
|
|
- swapCode:0,//换电仓编号
|
|
|
- connectionState:0, // 车站连接状态
|
|
|
- swapSoc:0, //绿电池缓存数据
|
|
|
- swapCurrent:0 //绿电池缓存数据
|
|
|
+ // 电池动画
|
|
|
+ swapAnimationVo: {
|
|
|
+ step: 0, // 动画步骤
|
|
|
+ soc: 30, // 车上电池SOC
|
|
|
+ transitCode: null, // 中转仓编号
|
|
|
+ swapCode: 0, // 换电仓编号
|
|
|
+ connectionState: 0, // 车站连接状态
|
|
|
+ swapSoc: 0, // 绿电池缓存数据
|
|
|
+ swapCurrent: 0 // 绿电池缓存数据
|
|
|
},
|
|
|
- storeInfoList:[],//电池列表和充电机状态列表
|
|
|
- //电池动画结束
|
|
|
- //第二部分动画开始
|
|
|
- swapProcess:{
|
|
|
- //第一步
|
|
|
- validation:null,
|
|
|
- valPercentage:null,
|
|
|
+ storeInfoList: [], // 电池列表和充电机状态列表
|
|
|
+ // 电池动画结束
|
|
|
+ // 第二部分动画开始
|
|
|
+ swapProcess: {
|
|
|
+ // 第一步
|
|
|
+ validation: null,
|
|
|
+ valPercentage: null,
|
|
|
valAngle: null,
|
|
|
- //第二步
|
|
|
+ // 第二步
|
|
|
apply: null,
|
|
|
applyPercentage: null,
|
|
|
applyAngle: null,
|
|
|
- //第三步
|
|
|
+ // 第三步
|
|
|
begin: null,
|
|
|
beginPercentage: null,
|
|
|
beginAngle: null,
|
|
|
- //第四步
|
|
|
- swap:null,
|
|
|
+ // 第四步
|
|
|
+ swap: null,
|
|
|
swapPercentage: null,
|
|
|
swapAngle: null,
|
|
|
- //第五步
|
|
|
- end:null,
|
|
|
- endPercentage:null,
|
|
|
- endAngle: null,
|
|
|
+ // 第五步
|
|
|
+ end: null,
|
|
|
+ endPercentage: null,
|
|
|
+ endAngle: null
|
|
|
},
|
|
|
processtext: [
|
|
|
- "车辆验证",
|
|
|
- "发起换电申请",
|
|
|
- "开始换电",
|
|
|
- "更换电池",
|
|
|
- "换电完成",
|
|
|
+ '车辆验证',
|
|
|
+ '发起换电申请',
|
|
|
+ '开始换电',
|
|
|
+ '更换电池',
|
|
|
+ '换电完成'
|
|
|
],
|
|
|
processImages: [
|
|
|
- "yewu1.png",
|
|
|
- "yewu2.png",
|
|
|
- "yewu3.png",
|
|
|
- "yewu4.png",
|
|
|
- "yewu5.png",
|
|
|
+ 'yewu1.png',
|
|
|
+ 'yewu2.png',
|
|
|
+ 'yewu3.png',
|
|
|
+ 'yewu4.png',
|
|
|
+ 'yewu5.png'
|
|
|
],
|
|
|
processDone: [false, false, false, false, false],
|
|
|
percent: [0, 0, 0, 0, 0],
|
|
|
processDeg: [0, 0, 0, 0, 0],
|
|
|
- //第二部分动画结束
|
|
|
+ // 第二部分动画结束
|
|
|
|
|
|
- //换电详情
|
|
|
+ // 换电详情
|
|
|
swapInfo: {
|
|
|
- capacity: "--",
|
|
|
- quantity: "--",
|
|
|
- swapFreq: "--",
|
|
|
- todayAlarmFreq: "--",
|
|
|
- todayCapacity: "--",
|
|
|
- todaySwapFreq: "--",
|
|
|
+ capacity: '--',
|
|
|
+ quantity: '--',
|
|
|
+ swapFreq: '--',
|
|
|
+ todayAlarmFreq: '--',
|
|
|
+ todayCapacity: '--',
|
|
|
+ todaySwapFreq: '--'
|
|
|
},
|
|
|
- //换电记录
|
|
|
+ // 换电记录
|
|
|
carRecord: [],
|
|
|
- //告警记录
|
|
|
- alarmRecordList: [],
|
|
|
- };
|
|
|
- },
|
|
|
- mounted() {
|
|
|
- //监控视频
|
|
|
- // const videoUrl = wsUrl.devServer.proxy["/video"].target
|
|
|
- // let canvas = document.getElementById("video-1");
|
|
|
- // var player = new window.JSMpeg.Player(videoUrl, {
|
|
|
- // canvas: canvas,
|
|
|
- // });
|
|
|
- // player.play();
|
|
|
- if(getToken()){
|
|
|
- if (this.ws) {
|
|
|
- this.ws.close();
|
|
|
- }
|
|
|
- this.websocketConnect();
|
|
|
- //清除定时器
|
|
|
- this.clearTimerList();
|
|
|
- //检测断开重连
|
|
|
- this.detectWebsocketConnection();
|
|
|
- //开启定时器
|
|
|
- this.setTimerList();
|
|
|
+ // 告警记录
|
|
|
+ alarmRecordList: []
|
|
|
}
|
|
|
},
|
|
|
- destroyed() {
|
|
|
- this.websocketOnClose();
|
|
|
- this.clearTimerList();
|
|
|
- },
|
|
|
computed: {
|
|
|
- //车辆链接状态
|
|
|
+ // 车辆链接状态
|
|
|
Carlink() {
|
|
|
- if (this.vehicleInfo.conState != "—") {
|
|
|
- return this.vehicleInfo.conState ? "已链接" : "未链接";
|
|
|
+ if (this.vehicleInfo.conState != '—') {
|
|
|
+ return this.vehicleInfo.conState ? '已链接' : '未链接'
|
|
|
} else {
|
|
|
- return "—";
|
|
|
+ return '—'
|
|
|
}
|
|
|
},
|
|
|
- //解锁状态
|
|
|
+ // 解锁状态
|
|
|
Carlock() {
|
|
|
- if (this.vehicleInfo.lockState != "—") {
|
|
|
- return this.vehicleInfo.lockState ? "已解锁" : "未解锁";
|
|
|
+ if (this.vehicleInfo.lockState != '—') {
|
|
|
+ return this.vehicleInfo.lockState ? '已解锁' : '未解锁'
|
|
|
} else {
|
|
|
- return "—";
|
|
|
+ return '—'
|
|
|
}
|
|
|
},
|
|
|
- //上电状态
|
|
|
+ // 上电状态
|
|
|
Carbattery() {
|
|
|
- if (this.vehicleInfo.batteryState != "—") {
|
|
|
- return this.vehicleInfo.batteryState ? "已下电" : "未下电";
|
|
|
+ if (this.vehicleInfo.batteryState != '—') {
|
|
|
+ return this.vehicleInfo.batteryState ? '已下电' : '未下电'
|
|
|
} else {
|
|
|
- return "—";
|
|
|
+ return '—'
|
|
|
}
|
|
|
- },
|
|
|
+ }
|
|
|
+ },
|
|
|
+ mounted() {
|
|
|
+ // 监控视频
|
|
|
+ // const videoUrl = wsUrl.devServer.proxy["/video"].target
|
|
|
+ // let canvas = document.getElementById("video-1");
|
|
|
+ // var player = new window.JSMpeg.Player(videoUrl, {
|
|
|
+ // canvas: canvas,
|
|
|
+ // });
|
|
|
+ // player.play();
|
|
|
+ if (getToken()) {
|
|
|
+ if (this.ws) {
|
|
|
+ this.ws.close()
|
|
|
+ }
|
|
|
+ this.websocketConnect()
|
|
|
+ // 清除定时器
|
|
|
+ this.clearTimerList()
|
|
|
+ // 检测断开重连
|
|
|
+ this.detectWebsocketConnection()
|
|
|
+ // 开启定时器
|
|
|
+ this.setTimerList()
|
|
|
+ }
|
|
|
+ },
|
|
|
+ destroyed() {
|
|
|
+ this.websocketOnClose()
|
|
|
+ this.clearTimerList()
|
|
|
},
|
|
|
methods: {
|
|
|
- //定时器列表
|
|
|
+ // 定时器列表
|
|
|
setTimerList() {
|
|
|
- this.exchargeInfo();
|
|
|
- this.swapRecord();
|
|
|
- this.alarmRecord();
|
|
|
+ this.exchargeInfo()
|
|
|
+ this.swapRecord()
|
|
|
+ this.alarmRecord()
|
|
|
this.exchargeTimer = setInterval(() => {
|
|
|
- this.exchargeInfo();
|
|
|
- this.swapRecord();
|
|
|
- this.alarmRecord();
|
|
|
- }, 5000);
|
|
|
+ this.exchargeInfo()
|
|
|
+ this.swapRecord()
|
|
|
+ this.alarmRecord()
|
|
|
+ }, 5000)
|
|
|
},
|
|
|
- //清除定时器列表
|
|
|
+ // 清除定时器列表
|
|
|
clearTimerList() {
|
|
|
if (this.exchargeTimer) {
|
|
|
- clearInterval(this.exchargeTimer);
|
|
|
+ clearInterval(this.exchargeTimer)
|
|
|
}
|
|
|
if (this.wsTimer) {
|
|
|
- clearInterval(this.wsTimer);
|
|
|
+ clearInterval(this.wsTimer)
|
|
|
}
|
|
|
},
|
|
|
- //换电信息
|
|
|
+ // 换电信息
|
|
|
exchargeInfo() {
|
|
|
swapInfo().then((rs) => {
|
|
|
- this.swapInfo = rs.data;
|
|
|
- });
|
|
|
+ this.swapInfo = rs.data
|
|
|
+ })
|
|
|
},
|
|
|
- //换电记录
|
|
|
+ // 换电记录
|
|
|
swapRecord() {
|
|
|
const params = {
|
|
|
page: 1,
|
|
|
pageSize: 2,
|
|
|
- orderByWays: "desc",
|
|
|
- orderByField: "swapBeginTime",
|
|
|
- };
|
|
|
+ orderByWays: 'desc',
|
|
|
+ orderByField: 'swapBeginTime'
|
|
|
+ }
|
|
|
swapRecord(params).then((rs) => {
|
|
|
- this.carRecord = rs.data.records;
|
|
|
- });
|
|
|
+ this.carRecord = rs.data.records
|
|
|
+ })
|
|
|
},
|
|
|
- //告警记录
|
|
|
+ // 告警记录
|
|
|
alarmRecord() {
|
|
|
const params = {
|
|
|
page: 1,
|
|
|
pageSize: 2,
|
|
|
- orderByWays: "desc",
|
|
|
- orderByField: "beginTime",
|
|
|
- };
|
|
|
+ orderByWays: 'desc',
|
|
|
+ orderByField: 'beginTime'
|
|
|
+ }
|
|
|
alarmRecord(params).then((rs) => {
|
|
|
- this.alarmRecordList = rs.data.records;
|
|
|
- });
|
|
|
+ this.alarmRecordList = rs.data.records
|
|
|
+ })
|
|
|
},
|
|
|
websocketOnOpen() {
|
|
|
- console.log("socket连接成功");
|
|
|
+ console.log('socket连接成功')
|
|
|
},
|
|
|
websocketOnMessage(m) {
|
|
|
- let d = JSON.parse(m.data);
|
|
|
+ const d = JSON.parse(m.data)
|
|
|
+ console.log(d)
|
|
|
if (d.driverInfoVo) {
|
|
|
- this.driverInfo = d.driverInfoVo;
|
|
|
+ this.driverInfo = d.driverInfoVo
|
|
|
}
|
|
|
- //车辆信息
|
|
|
+ // 车辆信息
|
|
|
if (d.vehicleInfo) {
|
|
|
- this.vehicleInfo = d.vehicleInfo;
|
|
|
+ this.vehicleInfo = d.vehicleInfo
|
|
|
}
|
|
|
- //电池信息
|
|
|
+ // 电池信息
|
|
|
if (d.batteryInfo) {
|
|
|
- this.batteryInfo = d.batteryInfo;
|
|
|
+ this.batteryInfo = d.batteryInfo
|
|
|
}
|
|
|
- //换电流程动画
|
|
|
- if(d.swapProcess){
|
|
|
- this.swapProcess = d.swapProcess;
|
|
|
- if(this.swapProcess.valAngle){
|
|
|
- this.processDone.splice(0,1,true);
|
|
|
- this.percent.splice(0,1,this.swapProcess.valPercentage);
|
|
|
- this.processDeg.splice(0,1,this.swapProcess.valAngle);
|
|
|
+ // 换电流程动画
|
|
|
+ if (d.swapProcess) {
|
|
|
+ this.swapProcess = d.swapProcess
|
|
|
+ if (this.swapProcess.valAngle === null) {
|
|
|
+ this.processDone = [false, false, false, false, false]
|
|
|
+ this.percent = [0, 0, 0, 0, 0]
|
|
|
+ this.processDeg = [0, 0, 0, 0, 0]
|
|
|
}
|
|
|
- if(this.swapProcess.applyAngle){
|
|
|
- this.processDone.splice(1,1,true);
|
|
|
- this.percent.splice(1,1,this.swapProcess.applyPercentage);
|
|
|
- this.processDeg.splice(1,1,this.swapProcess.applyAngle);
|
|
|
+ if (this.swapProcess.valAngle) {
|
|
|
+ this.processDone.splice(0, 1, true)
|
|
|
+ this.percent.splice(0, 1, this.swapProcess.valPercentage)
|
|
|
+ this.processDeg.splice(0, 1, this.swapProcess.valAngle)
|
|
|
}
|
|
|
- if(this.swapProcess.beginAngle){
|
|
|
- this.processDone.splice(2,1,true);
|
|
|
- this.percent.splice(2,1,this.swapProcess.beginPercentage);
|
|
|
- this.processDeg.splice(2,1,this.swapProcess.beginAngle);
|
|
|
+ if (this.swapProcess.applyAngle) {
|
|
|
+ this.processDone.splice(1, 1, true)
|
|
|
+ this.percent.splice(1, 1, this.swapProcess.applyPercentage)
|
|
|
+ this.processDeg.splice(1, 1, this.swapProcess.applyAngle)
|
|
|
}
|
|
|
- if(this.swapProcess.swapAngle){
|
|
|
- this.processDone.splice(3,1,true);
|
|
|
- this.percent.splice(3,1,this.swapProcess.swapPercentage);
|
|
|
- this.processDeg.splice(3,1,this.swapProcess.swapAngle);
|
|
|
+ if (this.swapProcess.beginAngle) {
|
|
|
+ this.processDone.splice(2, 1, true)
|
|
|
+ this.percent.splice(2, 1, this.swapProcess.beginPercentage)
|
|
|
+ this.processDeg.splice(2, 1, this.swapProcess.beginAngle)
|
|
|
}
|
|
|
- if(this.swapProcess.endAngle){
|
|
|
- this.processDone.splice(4,1,true);
|
|
|
- this.percent.splice(4,1,this.swapProcess.endPercentage);
|
|
|
- this.processDeg.splice(4,1,this.swapProcess.endAngle);
|
|
|
+ if (this.swapProcess.swapAngle) {
|
|
|
+ this.processDone.splice(3, 1, true)
|
|
|
+ this.percent.splice(3, 1, this.swapProcess.swapPercentage)
|
|
|
+ this.processDeg.splice(3, 1, this.swapProcess.swapAngle)
|
|
|
+ }
|
|
|
+ if (this.swapProcess.endAngle) {
|
|
|
+ this.processDone.splice(4, 1, true)
|
|
|
+ this.percent.splice(4, 1, this.swapProcess.endPercentage)
|
|
|
+ this.processDeg.splice(4, 1, this.swapProcess.endAngle)
|
|
|
}
|
|
|
}
|
|
|
- //右上角电池动画
|
|
|
- if(d.swapAnimationVo){
|
|
|
- this.swapAnimationVo= d.swapAnimationVo;
|
|
|
+ // 右上角电池动画
|
|
|
+ if (d.swapAnimationVo) {
|
|
|
+ this.swapAnimationVo = d.swapAnimationVo
|
|
|
}
|
|
|
- if(d.storeInfoList){
|
|
|
- this.storeInfoList= d.storeInfoList
|
|
|
- for(let i=0;i<d.storeInfoList.length;i++){
|
|
|
- this.$set(this.storeInfoList,i,d.storeInfoList[i])
|
|
|
+ if (d.storeInfoList) {
|
|
|
+ this.storeInfoList = d.storeInfoList
|
|
|
+ for (let i = 0; i < d.storeInfoList.length; i++) {
|
|
|
+ this.$set(this.storeInfoList, i, d.storeInfoList[i])
|
|
|
}
|
|
|
}
|
|
|
},
|
|
|
websocketOnError(e) {
|
|
|
- console.log("socket错误", e);
|
|
|
+ console.log('socket错误', e)
|
|
|
},
|
|
|
websocketOnClose(e) {
|
|
|
- console.log("socket断开", e);
|
|
|
+ console.log('socket断开', e)
|
|
|
},
|
|
|
detectWebsocketConnection() {
|
|
|
this.wsTimer = setInterval(() => {
|
|
|
if (this.ws.readyState != 1) {
|
|
|
- this.ws.close();
|
|
|
- this.websocketConnect();
|
|
|
+ this.ws.close()
|
|
|
+ this.websocketConnect()
|
|
|
}
|
|
|
- }, 3000);
|
|
|
+ }, 3000)
|
|
|
},
|
|
|
websocketConnect() {
|
|
|
- this.ws = new WebSocket(wsUrl.devServer.proxy["/ws"].target);
|
|
|
- this.ws.onopen = this.websocketOnOpen;
|
|
|
- this.ws.onerror = this.websocketOnError;
|
|
|
- this.ws.onmessage = this.websocketOnMessage;
|
|
|
- this.ws.onclose = this.websocketOnClose;
|
|
|
- },
|
|
|
- },
|
|
|
-};
|
|
|
+ this.ws = new WebSocket(wsUrl.devServer.proxy['/ws'].target)
|
|
|
+ this.ws.onopen = this.websocketOnOpen
|
|
|
+ this.ws.onerror = this.websocketOnError
|
|
|
+ this.ws.onmessage = this.websocketOnMessage
|
|
|
+ this.ws.onclose = this.websocketOnClose
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
</script>
|
|
|
|
|
|
<style lang="scss" scoped>
|
|
@@ -782,4 +785,4 @@ export default {
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
-</style>
|
|
|
+</style>
|