fix():车辆报文上报

master
DongZeLiang 2024-09-21 12:12:17 +08:00
parent 518900891d
commit 1bf4fc14a5
22 changed files with 84 additions and 147 deletions

View File

@ -6,7 +6,7 @@
<groupId>com.muyu</groupId>
<artifactId>VehicleSimulation</artifactId>
<version>1.0.5</version>
<version>1.0.6</version>
<properties>
<maven.compiler.source>17</maven.compiler.source>

View File

@ -1,6 +1,9 @@
package com.muyu.vehicle;
import com.alibaba.fastjson2.JSONObject;
import com.muyu.vehicle.model.VehicleData;
import com.muyu.vehicle.model.properties.MqttProperties;
import com.muyu.vehicle.thread.VehicleThread;
import com.muyu.web.common.SystemConstant;
import com.muyu.web.common.pool.ScheduledThreadPool;
import com.muyu.web.domain.VehicleInfo;
@ -8,9 +11,6 @@ import com.muyu.web.domain.model.PositionModel;
import com.muyu.web.utils.CalculateCheckDigit;
import com.muyu.web.utils.ConversionUtil;
import com.muyu.web.utils.VehicleUtils;
import com.muyu.vehicle.model.VehicleData;
import com.muyu.vehicle.model.properties.MqttProperties;
import com.muyu.vehicle.thread.VehicleThread;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
@ -54,6 +54,7 @@ public class VehicleInstance {
*/
@Builder.Default
private LinkedBlockingQueue<PositionModel> positionQueue = new LinkedBlockingQueue<>();
/**
*
*/
@ -148,6 +149,12 @@ public class VehicleInstance {
client.connect(options);
log.debug("车辆:[{}] 客户端初始化成功连接配置:{}", getVin(),
JSONObject.toJSONString(this.mqttProperties));
VehicleThread vehicleThread = new VehicleThread();
vehicleThread.setVehicleInstance(this);
this.setVehicleThread(vehicleThread);
ScheduledFuture<?> scheduledFuture = ScheduledThreadPool.submit(vehicleThread);
this.setScheduledFuture(scheduledFuture);
log.info("初始化车辆上报模拟线程开始:[{}]", this.getVin());
} catch (MqttException e) {
log.error("车辆:[{}] 客户端初始化异常", getVin(), e);
throw new RuntimeException(e);
@ -203,7 +210,7 @@ public class VehicleInstance {
/**
* 线
*/
public void initVehicleThread() {
/*public void initVehicleThread() {
if (this.positionCode == null){
throw new RuntimeException("车辆["+getVin()+"]未选中路径");
}
@ -216,29 +223,7 @@ public class VehicleInstance {
ScheduledFuture<?> scheduledFuture = ScheduledThreadPool.submit(vehicleThread);
this.setScheduledFuture(scheduledFuture);
log.info("初始化车辆上报模拟线程开始:[{}]", this.getVin());
}
/**
* 线
*/
public void startSend() {
this.msgCode = "上报";
if (this.vehicleThread != null){
this.vehicleThread.resume();
}
log.info("车辆[{}],开始上报", this.getVin());
}
/**
* 线
*/
public void pauseSend() {
this.msgCode = "暂停";
if (this.vehicleThread != null) {
this.vehicleThread.pause();
}
log.info("车辆[{}],暂停上报", this.getVin());
}
}*/
/**
*
@ -263,31 +248,45 @@ public class VehicleInstance {
/**
*
*/
public String imitateData() {
String gear = this.vehicleData.getGear();
if (!"D".equals(gear)){
log.info("车辆不是动车档位,不进行模拟数据");
return null;
}
public void imitateData() {
// 获取上一次定位点
PositionModel lastPositionModel = this.lastPosition == null ? positionQueue.poll() : this.lastPosition;
// 获取当前定位点
PositionModel currentPositionModel = positionQueue.poll();
if (currentPositionModel == null) {
return "表示当前定位点已经跑完,请选择其他路径";
currentPositionModel = PositionModel.builder()
.latitude(this.vehicleInfo.getLastLatitude())
.longitude(this.vehicleInfo.getLastLongitude())
.build();
}
if (lastPositionModel == null){
lastPositionModel = currentPositionModel;
}
// 两点之间的距离
BigDecimal distance = VehicleUtils.distance(Objects.requireNonNull(lastPositionModel), currentPositionModel);
BigDecimal distance = null;
if (currentPositionModel != null) {
distance = VehicleUtils.distance(Objects.requireNonNull(lastPositionModel), currentPositionModel);
}
if (lastPositionModel == currentPositionModel){
distance = new BigDecimal("0.01");
}
// 车辆总里程 相加
vehicleData.setMileage(vehicleData.getMileage().add(distance));
// 定位点填写
vehicleData.setLongitude(currentPositionModel.getLongitude());
vehicleData.setLatitude(currentPositionModel.getLatitude());
vehicleData.setLongitude(
currentPositionModel == null || currentPositionModel.getLongitude() == null ? this.vehicleInfo.getLastLongitude() : currentPositionModel.getLongitude()
);
vehicleData.setLatitude(
currentPositionModel == null || currentPositionModel.getLatitude() == null ? this.vehicleInfo.getLastLatitude() : currentPositionModel.getLatitude()
);
// 当前电量减少
// 电池浮动
BigDecimal batteryFloat = VehicleUtils.batteryFloat();
// 百公里占比
BigDecimal hundredKMScale = distance.divide(SystemConstant.hundredKilometers).setScale(3, RoundingMode.HALF_UP);
BigDecimal hundredKMScale = null;
if (distance != null) {
hundredKMScale = distance.divide(SystemConstant.hundredKilometers).setScale(3, RoundingMode.HALF_UP);
}
// 使用电量
BigDecimal powerUsage = powerConsumption.multiply(hundredKMScale)
.multiply(batteryFloat)
@ -299,15 +298,16 @@ public class VehicleInstance {
powerConsumption.multiply(batteryFloat).divide(new BigDecimal(1000)).setScale(2, RoundingMode.HALF_UP).toString()
);
// 计算总速度
vehicleData.setSpeed(
distance.divide(new BigDecimal(2))
.multiply(new BigDecimal("3600"))
.setScale(2, RoundingMode.HALF_UP).toString()
);
if (distance != null) {
vehicleData.setSpeed(
distance.divide(new BigDecimal(2))
.multiply(new BigDecimal("3600"))
.setScale(2, RoundingMode.HALF_UP).toString()
);
}
vehicleData.imitateBase();
vehicleData.imitateMotor();
vehicleData.imitateBatteryPack();
return null;
}
/**

View File

@ -4,8 +4,6 @@ import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Configuration;
/**
* @author DongZeLiang
@ -43,5 +41,9 @@ public class MqttProperties {
* ID
*/
private String clientId;
/**
*
*/
private int qos = 0;
}

View File

@ -13,11 +13,6 @@ public class VehicleThread implements Runnable {
*/
private volatile boolean isStop = false;
/**
*
*/
private volatile boolean isPaused;
/**
*
*/
@ -27,19 +22,11 @@ public class VehicleThread implements Runnable {
public void run() {
try {
if (!isStop){
if (!isPaused){
log.info("{} - 上报数据", this.vehicleInstance.getVin());
String imitateResult = this.vehicleInstance.imitateData();
if (imitateResult == null){
this.vehicleInstance.sendMsg(
this.vehicleInstance.getVehicleData().getMsg()
);
}else {
log.warn("车辆[{}]数据模拟:{}", this.vehicleInstance.getVin(), imitateResult);
}
}else {
log.info("暂停模拟和上报:[{}]", this.vehicleInstance.getVin());
}
log.info("{} - 上报数据", this.vehicleInstance.getVin());
this.vehicleInstance.imitateData();
this.vehicleInstance.sendMsg(
this.vehicleInstance.getVehicleData().getMsg()
);
}else {
log.info("终止模拟和上报:[{}]", this.vehicleInstance.getVin());
vehicleInstance.cancelExecution();
@ -49,21 +36,6 @@ public class VehicleThread implements Runnable {
}
}
/**
* 线
*/
public void pause() {
isPaused = true;
}
/**
* 线
*/
public void resume() {
isPaused = false;
}
/**
*
*/

View File

@ -1,15 +1,14 @@
package com.muyu.web.controller;
import com.muyu.vehicle.core.LocalContainer;
import com.muyu.vehicle.model.VehicleData;
import com.muyu.web.common.PageList;
import com.muyu.web.common.Result;
import com.muyu.web.domain.req.CheckPositionReq;
import com.muyu.web.domain.req.GearReq;
import com.muyu.web.domain.req.MsgReq;
import com.muyu.web.domain.req.VehicleInstanceListReq;
import com.muyu.web.domain.resp.VehicleInstanceResp;
import com.muyu.web.service.VehicleInstanceService;
import com.muyu.vehicle.core.LocalContainer;
import com.muyu.vehicle.model.VehicleData;
import lombok.extern.log4j.Log4j2;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
@ -53,9 +52,9 @@ public class VehicleInstanceController {
* @param vin vin
* @return
*/
@PostMapping("/client/init/{vin}")
@PostMapping("/client/start/{vin}")
public Result<String> vehicleClientInit(@PathVariable("vin") String vin){
this.vehicleInstanceService.vehicleClientInit(vin);
this.vehicleInstanceService.vehicleClientStart(vin);
return Result.success();
}
@ -81,16 +80,6 @@ public class VehicleInstanceController {
return Result.success();
}
/**
*
* @return
*/
@PostMapping("/msg")
public Result<String> msg(@RequestBody MsgReq msgReq){
this.vehicleInstanceService.msg(msgReq);
return Result.success();
}
/**
*
* @return

View File

@ -1,6 +1,7 @@
package com.muyu.web.domain;
import com.baomidou.mybatisplus.annotation.*;
import com.muyu.system.handle.SystemHandler;
import com.muyu.web.domain.model.ServerConfigModel;
import lombok.AllArgsConstructor;
import lombok.Builder;
@ -65,6 +66,7 @@ public class ServerConfig {
public static ServerConfig modeBuild (ServerConfigModel serverConfigModel, Supplier<Long> idKey) {
return builder()
.id(idKey.get())
.tenantId(SystemHandler.getTenantId())
.host(serverConfigModel.getHost())
.port(serverConfigModel.getPort())
.uri(serverConfigModel.getUri())

View File

@ -63,6 +63,18 @@ public class VehicleInfo {
@TableField("battery_level")
private BigDecimal batteryLevel;
/**
*
*/
@TableField("last_longitude")
private String lastLongitude;
/**
*
*/
@TableField("last_latitude")
private String lastLatitude;
/**
*
*/

View File

@ -4,7 +4,6 @@ import com.muyu.web.common.PageList;
import com.muyu.web.domain.VehicleInfo;
import com.muyu.web.domain.req.CheckPositionReq;
import com.muyu.web.domain.req.GearReq;
import com.muyu.web.domain.req.MsgReq;
import com.muyu.web.domain.req.VehicleInstanceListReq;
import com.muyu.web.domain.resp.VehicleInstanceResp;
@ -36,7 +35,7 @@ public interface VehicleInstanceService {
*
* @param vin vin
*/
void vehicleClientInit (String vin);
void vehicleClientStart (String vin);
/**
*
@ -50,12 +49,6 @@ public interface VehicleInstanceService {
*/
void checkPosition (CheckPositionReq checkPositionReq);
/**
*
* @param msgReq
*/
void msg (MsgReq msgReq);
/**
*
* @param gearReq

View File

@ -1,5 +1,6 @@
package com.muyu.web.service.impl;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.muyu.system.handle.SystemHandler;
@ -34,8 +35,9 @@ public class ServerConfigServiceImpl extends ServiceImpl<BaseMapper<ServerConfig
*/
@Override
public void edit (ServerConfigModel serverConfigModel) {
ServerConfig serverConfig = ServerConfig.modeBuild(serverConfigModel, SystemHandler::getUserId);
updateById(serverConfig);
update(serverConfig, new UpdateWrapper<>());
SystemHandler.setServerConfig(
ServerConfigProperties.modelToProperties(serverConfigModel)
);

View File

@ -13,7 +13,6 @@ import com.muyu.web.domain.model.MqttServerModel;
import com.muyu.web.domain.model.PositionModel;
import com.muyu.web.domain.req.CheckPositionReq;
import com.muyu.web.domain.req.GearReq;
import com.muyu.web.domain.req.MsgReq;
import com.muyu.web.domain.req.VehicleInstanceListReq;
import com.muyu.web.domain.resp.VehicleInstanceResp;
import com.muyu.web.service.PositionRouteService;
@ -99,7 +98,7 @@ public class VehicleInstanceServiceImpl implements VehicleInstanceService {
* @param vin vin
*/
@Override
public void vehicleClientInit (String vin) {
public void vehicleClientStart (String vin) {
log.info("vin[{}],开始上线", vin);
VehicleInstance vehicleInstance = LocalContainer.getVehicleInstance(vin);
if (vehicleInstance == null){
@ -159,27 +158,6 @@ public class VehicleInstanceServiceImpl implements VehicleInstanceService {
vehicleInstance.setPositionCode(checkPositionReq.getPositionCode());
}
/**
*
*
* @param msgReq
*/
@Override
public void msg (MsgReq msgReq) {
VehicleInstance vehicleInstance = LocalContainer.getVehicleInstance(msgReq.getVin());
switch (msgReq.getMsgCode()){
case "上报" -> {
if(vehicleInstance.getVehicleThread() == null){
vehicleInstance.initVehicleThread();
}
vehicleInstance.startSend();
}
case "暂停" -> vehicleInstance.pauseSend();
case "停止" -> vehicleInstance.stopSend();
default -> throw new RuntimeException("车辆消息事件错误");
}
}
/**
*
*

View File

@ -6,7 +6,6 @@ import com.muyu.vehicle.core.LocalContainer;
import com.muyu.web.domain.PositionRouteInfo;
import com.muyu.web.domain.model.PositionModel;
import com.muyu.web.domain.model.TaskModel;
import com.muyu.web.domain.req.MsgReq;
import com.muyu.web.domain.resp.UnifiedTaskResp;
import com.muyu.web.service.PositionRouteService;
import com.muyu.web.service.VehicleInstanceService;
@ -51,7 +50,7 @@ public class VehicleUnifiedServiceImpl implements VehicleUnifiedService {
.map(VehicleInstance::getVin)
.toList();
taskModel.submit("一键上线", vinList, (vin) -> {
vehicleInstanceService.vehicleClientInit(vin);
vehicleInstanceService.vehicleClientStart(vin);
});
}
@ -96,12 +95,6 @@ public class VehicleUnifiedServiceImpl implements VehicleUnifiedService {
vehicleInstance.setPositionCode(positionCode);
// 设置车辆档位
vehicleInstance.setGear("D");
vehicleInstanceService.msg(
MsgReq.builder()
.vin(vin)
.msgCode("上报")
.build()
);
});
}
@ -143,12 +136,6 @@ public class VehicleUnifiedServiceImpl implements VehicleUnifiedService {
// 获取在线车辆VIN
List<String> vinList = LocalContainer.getOnlineVehicleVin();
taskModel.submit("一键取消上报", vinList, (vin) -> {
vehicleInstanceService.msg(
MsgReq.builder()
.vin(vin)
.msgCode("停止")
.build()
);
});
}

View File

@ -0,0 +1 @@
.app-container[data-v-2ab19043]{padding:10px 5px 0 10px;background-color:#f4f4f5}.el-row[data-v-2ab19043]{&:last-child{margin-bottom:0}}.bg-purple[data-v-2ab19043]{background:#f4f4f5}.grid-content[data-v-2ab19043]{border-radius:4px;overflow-x:hidden;overflow-y:auto}.grid-content[data-v-2ab19043]::-webkit-scrollbar{width:4px}.grid-content[data-v-2ab19043]::-webkit-scrollbar-thumb{border-radius:10px;background:rgba(0,0,0,.2)}.grid-content[data-v-2ab19043]::-webkit-scrollbar-track{border-radius:0;background:rgba(0,0,0,.1)}.vehicleDiv[data-v-2ab19043]{height:50px;margin:0 0 10px 0}.contentMain[data-v-2ab19043]{margin-top:10px}.vehicleDataTab[data-v-2ab19043]{width:100%;overflow-y:auto;overflow-x:hidden}.vehicleDataTab[data-v-2ab19043]::-webkit-scrollbar{width:4px}.vehicleDataTab[data-v-2ab19043]::-webkit-scrollbar-thumb{border-radius:10px;background:rgba(0,0,0,.2)}.vehicleDataTab[data-v-2ab19043]::-webkit-scrollbar-track{border-radius:0;background:rgba(0,0,0,.1)}.el-form-item__label[data-v-2ab19043]{padding:0}.el-form-item[data-v-2ab19043]{margin-bottom:5px}

View File

@ -1 +0,0 @@
.app-container[data-v-601f2e6f]{padding:10px 5px 0 10px;background-color:#f4f4f5}.el-row[data-v-601f2e6f]{&:last-child{margin-bottom:0}}.bg-purple[data-v-601f2e6f]{background:#f4f4f5}.grid-content[data-v-601f2e6f]{border-radius:4px;overflow-x:hidden;overflow-y:auto}.grid-content[data-v-601f2e6f]::-webkit-scrollbar{width:4px}.grid-content[data-v-601f2e6f]::-webkit-scrollbar-thumb{border-radius:10px;background:rgba(0,0,0,.2)}.grid-content[data-v-601f2e6f]::-webkit-scrollbar-track{border-radius:0;background:rgba(0,0,0,.1)}.vehicleDiv[data-v-601f2e6f]{height:50px;margin:0 0 10px 0}.contentMain[data-v-601f2e6f]{margin-top:10px}.vehicleDataTab[data-v-601f2e6f]{width:100%;overflow-y:auto;overflow-x:hidden}.vehicleDataTab[data-v-601f2e6f]::-webkit-scrollbar{width:4px}.vehicleDataTab[data-v-601f2e6f]::-webkit-scrollbar-thumb{border-radius:10px;background:rgba(0,0,0,.2)}.vehicleDataTab[data-v-601f2e6f]::-webkit-scrollbar-track{border-radius:0;background:rgba(0,0,0,.1)}.el-form-item__label[data-v-601f2e6f]{padding:0}.el-form-item[data-v-601f2e6f]{margin-bottom:5px}

View File

@ -1 +1 @@
<!DOCTYPE html><html><head><meta charset=utf-8><meta http-equiv=X-UA-Compatible content="IE=edge,chrome=1"><meta name=viewport content="width=device-width,initial-scale=1,maximum-scale=1,user-scalable=no"><link rel=icon href=/favicon.ico><title>车辆</title><link href=/static/css/app.e2ca9161.css rel=preload as=style><link href=/static/css/chunk-elementUI.c1c3b808.css rel=preload as=style><link href=/static/css/chunk-libs.3dfb7769.css rel=preload as=style><link href=/static/js/app.c57091f6.js rel=preload as=script><link href=/static/js/chunk-elementUI.2491fb2f.js rel=preload as=script><link href=/static/js/chunk-libs.5e39c7d0.js rel=preload as=script><link href=/static/css/chunk-elementUI.c1c3b808.css rel=stylesheet><link href=/static/css/chunk-libs.3dfb7769.css rel=stylesheet><link href=/static/css/app.e2ca9161.css rel=stylesheet></head><body><noscript><strong>We're sorry but 车辆 doesn't work properly without JavaScript enabled. Please enable it to continue.</strong></noscript><div id=app></div><script>(function(e){function t(t){for(var r,c,a=t[0],f=t[1],i=t[2],l=0,s=[];l<a.length;l++)c=a[l],Object.prototype.hasOwnProperty.call(o,c)&&o[c]&&s.push(o[c][0]),o[c]=0;for(r in f)Object.prototype.hasOwnProperty.call(f,r)&&(e[r]=f[r]);d&&d(t);while(s.length)s.shift()();return u.push.apply(u,i||[]),n()}function n(){for(var e,t=0;t<u.length;t++){for(var n=u[t],r=!0,c=1;c<n.length;c++){var a=n[c];0!==o[a]&&(r=!1)}r&&(u.splice(t--,1),e=f(f.s=n[0]))}return e}var r={},c={runtime:0},o={runtime:0},u=[];function a(e){return f.p+"static/js/"+({}[e]||e)+"."+{"chunk-22cea610":"7879ff8f","chunk-2cbbeb82":"e1753706","chunk-6f60c8f1":"f16bf298","chunk-0e8cf5f4":"b7552abc","chunk-7146ee17":"8de3769d","chunk-725364c9":"5d13ee53","chunk-7d1a163b":"4d8cc933","chunk-8f81ac56":"da9fce35"}[e]+".js"}function f(t){if(r[t])return r[t].exports;var n=r[t]={i:t,l:!1,exports:{}};return e[t].call(n.exports,n,n.exports,f),n.l=!0,n.exports}f.e=function(e){var t=[],n={"chunk-22cea610":1,"chunk-2cbbeb82":1,"chunk-0e8cf5f4":1,"chunk-7146ee17":1,"chunk-725364c9":1,"chunk-8f81ac56":1};c[e]?t.push(c[e]):0!==c[e]&&n[e]&&t.push(c[e]=new Promise((function(t,n){for(var r="static/css/"+({}[e]||e)+"."+{"chunk-22cea610":"3c7f5ad9","chunk-2cbbeb82":"59a1d200","chunk-6f60c8f1":"31d6cfe0","chunk-0e8cf5f4":"3328abfd","chunk-7146ee17":"6963607a","chunk-725364c9":"71c8f52e","chunk-7d1a163b":"31d6cfe0","chunk-8f81ac56":"1efc9dd1"}[e]+".css",o=f.p+r,u=document.getElementsByTagName("link"),a=0;a<u.length;a++){var i=u[a],l=i.getAttribute("data-href")||i.getAttribute("href");if("stylesheet"===i.rel&&(l===r||l===o))return t()}var s=document.getElementsByTagName("style");for(a=0;a<s.length;a++){i=s[a],l=i.getAttribute("data-href");if(l===r||l===o)return t()}var d=document.createElement("link");d.rel="stylesheet",d.type="text/css",d.onload=t,d.onerror=function(t){var r=t&&t.target&&t.target.src||o,u=new Error("Loading CSS chunk "+e+" failed.\n("+r+")");u.code="CSS_CHUNK_LOAD_FAILED",u.request=r,delete c[e],d.parentNode.removeChild(d),n(u)},d.href=o;var h=document.getElementsByTagName("head")[0];h.appendChild(d)})).then((function(){c[e]=0})));var r=o[e];if(0!==r)if(r)t.push(r[2]);else{var u=new Promise((function(t,n){r=o[e]=[t,n]}));t.push(r[2]=u);var i,l=document.createElement("script");l.charset="utf-8",l.timeout=120,f.nc&&l.setAttribute("nonce",f.nc),l.src=a(e);var s=new Error;i=function(t){l.onerror=l.onload=null,clearTimeout(d);var n=o[e];if(0!==n){if(n){var r=t&&("load"===t.type?"missing":t.type),c=t&&t.target&&t.target.src;s.message="Loading chunk "+e+" failed.\n("+r+": "+c+")",s.name="ChunkLoadError",s.type=r,s.request=c,n[1](s)}o[e]=void 0}};var d=setTimeout((function(){i({type:"timeout",target:l})}),12e4);l.onerror=l.onload=i,document.head.appendChild(l)}return Promise.all(t)},f.m=e,f.c=r,f.d=function(e,t,n){f.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},f.r=function(e){"undefined"!==typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},f.t=function(e,t){if(1&t&&(e=f(e)),8&t)return e;if(4&t&&"object"===typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(f.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var r in e)f.d(n,r,function(t){return e[t]}.bind(null,r));return n},f.n=function(e){var t=e&&e.__esModule?function(){return e["default"]}:function(){return e};return f.d(t,"a",t),t},f.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},f.p="/",f.oe=function(e){throw console.error(e),e};var i=window["webpackJsonp"]=window["webpackJsonp"]||[],l=i.push.bind(i);i.push=t,i=i.slice();for(var s=0;s<i.length;s++)t(i[s]);var d=l;n()})([]);</script><script src=/static/js/chunk-elementUI.2491fb2f.js></script><script src=/static/js/chunk-libs.5e39c7d0.js></script><script src=/static/js/app.c57091f6.js></script></body></html>
<!DOCTYPE html><html><head><meta charset=utf-8><meta http-equiv=X-UA-Compatible content="IE=edge,chrome=1"><meta name=viewport content="width=device-width,initial-scale=1,maximum-scale=1,user-scalable=no"><link rel=icon href=/favicon.ico><title>车辆</title><link href=/static/css/app.e2ca9161.css rel=preload as=style><link href=/static/css/chunk-elementUI.c1c3b808.css rel=preload as=style><link href=/static/css/chunk-libs.3dfb7769.css rel=preload as=style><link href=/static/js/app.a2f5934b.js rel=preload as=script><link href=/static/js/chunk-elementUI.2491fb2f.js rel=preload as=script><link href=/static/js/chunk-libs.5e39c7d0.js rel=preload as=script><link href=/static/css/chunk-elementUI.c1c3b808.css rel=stylesheet><link href=/static/css/chunk-libs.3dfb7769.css rel=stylesheet><link href=/static/css/app.e2ca9161.css rel=stylesheet></head><body><noscript><strong>We're sorry but 车辆 doesn't work properly without JavaScript enabled. Please enable it to continue.</strong></noscript><div id=app></div><script>(function(e){function t(t){for(var r,c,u=t[0],f=t[1],i=t[2],l=0,d=[];l<u.length;l++)c=u[l],Object.prototype.hasOwnProperty.call(o,c)&&o[c]&&d.push(o[c][0]),o[c]=0;for(r in f)Object.prototype.hasOwnProperty.call(f,r)&&(e[r]=f[r]);s&&s(t);while(d.length)d.shift()();return a.push.apply(a,i||[]),n()}function n(){for(var e,t=0;t<a.length;t++){for(var n=a[t],r=!0,c=1;c<n.length;c++){var u=n[c];0!==o[u]&&(r=!1)}r&&(a.splice(t--,1),e=f(f.s=n[0]))}return e}var r={},c={runtime:0},o={runtime:0},a=[];function u(e){return f.p+"static/js/"+({}[e]||e)+"."+{"chunk-00a52ac4":"5f82d470","chunk-159c7f2c":"0fa7a8a3","chunk-2cbbeb82":"e1753706","chunk-643fd843":"ad8a85d9","chunk-6f60c8f1":"f16bf298","chunk-0e8cf5f4":"b7552abc","chunk-7d1a163b":"4d8cc933","chunk-8f81ac56":"da9fce35"}[e]+".js"}function f(t){if(r[t])return r[t].exports;var n=r[t]={i:t,l:!1,exports:{}};return e[t].call(n.exports,n,n.exports,f),n.l=!0,n.exports}f.e=function(e){var t=[],n={"chunk-00a52ac4":1,"chunk-159c7f2c":1,"chunk-2cbbeb82":1,"chunk-643fd843":1,"chunk-0e8cf5f4":1,"chunk-8f81ac56":1};c[e]?t.push(c[e]):0!==c[e]&&n[e]&&t.push(c[e]=new Promise((function(t,n){for(var r="static/css/"+({}[e]||e)+"."+{"chunk-00a52ac4":"71c8f52e","chunk-159c7f2c":"3c7f5ad9","chunk-2cbbeb82":"59a1d200","chunk-643fd843":"5488218b","chunk-6f60c8f1":"31d6cfe0","chunk-0e8cf5f4":"3328abfd","chunk-7d1a163b":"31d6cfe0","chunk-8f81ac56":"1efc9dd1"}[e]+".css",o=f.p+r,a=document.getElementsByTagName("link"),u=0;u<a.length;u++){var i=a[u],l=i.getAttribute("data-href")||i.getAttribute("href");if("stylesheet"===i.rel&&(l===r||l===o))return t()}var d=document.getElementsByTagName("style");for(u=0;u<d.length;u++){i=d[u],l=i.getAttribute("data-href");if(l===r||l===o)return t()}var s=document.createElement("link");s.rel="stylesheet",s.type="text/css",s.onload=t,s.onerror=function(t){var r=t&&t.target&&t.target.src||o,a=new Error("Loading CSS chunk "+e+" failed.\n("+r+")");a.code="CSS_CHUNK_LOAD_FAILED",a.request=r,delete c[e],s.parentNode.removeChild(s),n(a)},s.href=o;var h=document.getElementsByTagName("head")[0];h.appendChild(s)})).then((function(){c[e]=0})));var r=o[e];if(0!==r)if(r)t.push(r[2]);else{var a=new Promise((function(t,n){r=o[e]=[t,n]}));t.push(r[2]=a);var i,l=document.createElement("script");l.charset="utf-8",l.timeout=120,f.nc&&l.setAttribute("nonce",f.nc),l.src=u(e);var d=new Error;i=function(t){l.onerror=l.onload=null,clearTimeout(s);var n=o[e];if(0!==n){if(n){var r=t&&("load"===t.type?"missing":t.type),c=t&&t.target&&t.target.src;d.message="Loading chunk "+e+" failed.\n("+r+": "+c+")",d.name="ChunkLoadError",d.type=r,d.request=c,n[1](d)}o[e]=void 0}};var s=setTimeout((function(){i({type:"timeout",target:l})}),12e4);l.onerror=l.onload=i,document.head.appendChild(l)}return Promise.all(t)},f.m=e,f.c=r,f.d=function(e,t,n){f.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},f.r=function(e){"undefined"!==typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},f.t=function(e,t){if(1&t&&(e=f(e)),8&t)return e;if(4&t&&"object"===typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(f.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var r in e)f.d(n,r,function(t){return e[t]}.bind(null,r));return n},f.n=function(e){var t=e&&e.__esModule?function(){return e["default"]}:function(){return e};return f.d(t,"a",t),t},f.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},f.p="/",f.oe=function(e){throw console.error(e),e};var i=window["webpackJsonp"]=window["webpackJsonp"]||[],l=i.push.bind(i);i.push=t,i=i.slice();for(var d=0;d<i.length;d++)t(i[d]);var s=l;n()})([]);</script><script src=/static/js/chunk-elementUI.2491fb2f.js></script><script src=/static/js/chunk-libs.5e39c7d0.js></script><script src=/static/js/app.a2f5934b.js></script></body></html>

File diff suppressed because one or more lines are too long

View File

@ -1 +1 @@
(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-22cea610"],{"26fc":function(t,s,a){t.exports=a.p+"static/img/404_cloud.0f4bc32b.png"},"8cdb":function(t,s,a){"use strict";a.r(s);var e=function(){var t=this,s=t.$createElement,a=t._self._c||s;return a("div",{staticClass:"wscn-http404-container"},[a("div",{staticClass:"wscn-http404"},[t._m(0),a("div",{staticClass:"bullshit"},[a("div",{staticClass:"bullshit__oops"},[t._v("OOPS!")]),t._m(1),a("div",{staticClass:"bullshit__headline"},[t._v(t._s(t.message))]),a("div",{staticClass:"bullshit__info"},[t._v("Please check that the URL you entered is correct, or click the button below to return to the homepage.")]),a("a",{staticClass:"bullshit__return-home",attrs:{href:""}},[t._v("Back to home")])])])])},c=[function(){var t=this,s=t.$createElement,e=t._self._c||s;return e("div",{staticClass:"pic-404"},[e("img",{staticClass:"pic-404__parent",attrs:{src:a("a36b"),alt:"404"}}),e("img",{staticClass:"pic-404__child left",attrs:{src:a("26fc"),alt:"404"}}),e("img",{staticClass:"pic-404__child mid",attrs:{src:a("26fc"),alt:"404"}}),e("img",{staticClass:"pic-404__child right",attrs:{src:a("26fc"),alt:"404"}})])},function(){var t=this,s=t.$createElement,a=t._self._c||s;return a("div",{staticClass:"bullshit__info"},[t._v("All rights reserved "),a("a",{staticStyle:{color:"#20a0ff"},attrs:{href:"https://wallstreetcn.com",target:"_blank"}},[t._v("wallstreetcn")])])}],i={name:"Page404",computed:{message:function(){return"The webmaster said that you can not enter this page..."}}},l=i,n=(a("dd53"),a("2877")),r=Object(n["a"])(l,e,c,!1,null,"c095f994",null);s["default"]=r.exports},a36b:function(t,s,a){t.exports=a.p+"static/img/404.a57b6f31.png"},b0a8:function(t,s,a){},dd53:function(t,s,a){"use strict";a("b0a8")}}]);
(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-159c7f2c"],{"26fc":function(t,s,a){t.exports=a.p+"static/img/404_cloud.0f4bc32b.png"},"8cdb":function(t,s,a){"use strict";a.r(s);var c=function(){var t=this,s=t.$createElement,a=t._self._c||s;return a("div",{staticClass:"wscn-http404-container"},[a("div",{staticClass:"wscn-http404"},[t._m(0),a("div",{staticClass:"bullshit"},[a("div",{staticClass:"bullshit__oops"},[t._v("OOPS!")]),t._m(1),a("div",{staticClass:"bullshit__headline"},[t._v(t._s(t.message))]),a("div",{staticClass:"bullshit__info"},[t._v("Please check that the URL you entered is correct, or click the button below to return to the homepage.")]),a("a",{staticClass:"bullshit__return-home",attrs:{href:""}},[t._v("Back to home")])])])])},e=[function(){var t=this,s=t.$createElement,c=t._self._c||s;return c("div",{staticClass:"pic-404"},[c("img",{staticClass:"pic-404__parent",attrs:{src:a("a36b"),alt:"404"}}),c("img",{staticClass:"pic-404__child left",attrs:{src:a("26fc"),alt:"404"}}),c("img",{staticClass:"pic-404__child mid",attrs:{src:a("26fc"),alt:"404"}}),c("img",{staticClass:"pic-404__child right",attrs:{src:a("26fc"),alt:"404"}})])},function(){var t=this,s=t.$createElement,a=t._self._c||s;return a("div",{staticClass:"bullshit__info"},[t._v("All rights reserved "),a("a",{staticStyle:{color:"#20a0ff"},attrs:{href:"https://wallstreetcn.com",target:"_blank"}},[t._v("wallstreetcn")])])}],i={name:"Page404",computed:{message:function(){return"The webmaster said that you can not enter this page..."}}},l=i,n=(a("dd53"),a("2877")),r=Object(n["a"])(l,c,e,!1,null,"c095f994",null);s["default"]=r.exports},a36b:function(t,s,a){t.exports=a.p+"static/img/404.a57b6f31.png"},b0a8:function(t,s,a){},dd53:function(t,s,a){"use strict";a("b0a8")}}]);

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long