parent
3e6f723fe2
commit
5236765b9c
|
@ -103,6 +103,13 @@ public class VehicleInstanceController {
|
||||||
return Result.success();
|
return Result.success();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 设置车辆故障状态
|
||||||
|
* @param statusKey
|
||||||
|
* @param vin
|
||||||
|
* @param statusValue
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
@PutMapping("/status/{vin}/{statusKey}/{statusValue}")
|
@PutMapping("/status/{vin}/{statusKey}/{statusValue}")
|
||||||
public Result<String> editStatus(@PathVariable("statusKey") String statusKey,
|
public Result<String> editStatus(@PathVariable("statusKey") String statusKey,
|
||||||
@PathVariable("vin") String vin,
|
@PathVariable("vin") String vin,
|
||||||
|
@ -110,4 +117,49 @@ public class VehicleInstanceController {
|
||||||
this.vehicleInstanceService.editStatus(vin, statusKey, statusValue);
|
this.vehicleInstanceService.editStatus(vin, statusKey, statusValue);
|
||||||
return Result.success();
|
return Result.success();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 一键上线
|
||||||
|
*/
|
||||||
|
@PostMapping("/unified/online")
|
||||||
|
public Result<String> unifiedOnline(){
|
||||||
|
this.vehicleInstanceService.unifiedOnline();
|
||||||
|
return Result.success(null,"已成功发布一键上线任务");
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 一键离线
|
||||||
|
*/
|
||||||
|
@PostMapping("/unified/offline")
|
||||||
|
public Result<String> unifiedOffline(){
|
||||||
|
this.vehicleInstanceService.unifiedOffline();
|
||||||
|
return Result.success(null,"已成功发布一键离线任务");
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 一键上报
|
||||||
|
*/
|
||||||
|
@PostMapping("/unified/send")
|
||||||
|
public Result<String> unifiedSend(){
|
||||||
|
this.vehicleInstanceService.unifiedSend();
|
||||||
|
return Result.success(null,"已成功发布一键上报任务");
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 一键重置路径
|
||||||
|
*/
|
||||||
|
@PostMapping("/unified/position")
|
||||||
|
public Result<String> unifiedPosition(){
|
||||||
|
this.vehicleInstanceService.unifiedPosition();
|
||||||
|
return Result.success(null,"已成功发布一键上报任务");
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 一键取消上报
|
||||||
|
*/
|
||||||
|
@PostMapping("/unified/stop")
|
||||||
|
public Result<String> unifiedStop(){
|
||||||
|
this.vehicleInstanceService.unifiedStop();
|
||||||
|
return Result.success(null,"已成功发布取消上报任务");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -70,4 +70,30 @@ public interface VehicleInstanceService {
|
||||||
*/
|
*/
|
||||||
void editStatus (String vin, String statusKey, Integer statusValue);
|
void editStatus (String vin, String statusKey, Integer statusValue);
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 一键上线
|
||||||
|
*/
|
||||||
|
public void unifiedOnline();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 一键离线
|
||||||
|
*/
|
||||||
|
public void unifiedOffline();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 一键上报
|
||||||
|
*/
|
||||||
|
public void unifiedSend();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 一键重置路径
|
||||||
|
*/
|
||||||
|
void unifiedPosition ();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 一键取消上报
|
||||||
|
*/
|
||||||
|
public void unifiedStop();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,7 +1,9 @@
|
||||||
package com.muyu.service.impl;
|
package com.muyu.service.impl;
|
||||||
|
|
||||||
|
import com.alibaba.fastjson2.JSONArray;
|
||||||
import com.muyu.common.PageList;
|
import com.muyu.common.PageList;
|
||||||
import com.muyu.common.Result;
|
import com.muyu.common.Result;
|
||||||
|
import com.muyu.domain.PositionRouteInfo;
|
||||||
import com.muyu.domain.Vehicle;
|
import com.muyu.domain.Vehicle;
|
||||||
import com.muyu.domain.model.PositionModel;
|
import com.muyu.domain.model.PositionModel;
|
||||||
import com.muyu.domain.req.CheckPositionReq;
|
import com.muyu.domain.req.CheckPositionReq;
|
||||||
|
@ -27,7 +29,9 @@ import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
import java.util.Comparator;
|
import java.util.Comparator;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Random;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
import java.util.concurrent.atomic.AtomicBoolean;
|
||||||
import java.util.stream.Stream;
|
import java.util.stream.Stream;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -165,10 +169,8 @@ public class VehicleInstanceServiceImpl implements VehicleInstanceService {
|
||||||
case "上报" -> {
|
case "上报" -> {
|
||||||
if(vehicleInstance.getVehicleThread() == null){
|
if(vehicleInstance.getVehicleThread() == null){
|
||||||
vehicleInstance.initVehicleThread();
|
vehicleInstance.initVehicleThread();
|
||||||
vehicleInstance.startSend();
|
|
||||||
}else {
|
|
||||||
vehicleInstance.pauseSend();
|
|
||||||
}
|
}
|
||||||
|
vehicleInstance.startSend();
|
||||||
}
|
}
|
||||||
case "暂停" -> vehicleInstance.pauseSend();
|
case "暂停" -> vehicleInstance.pauseSend();
|
||||||
case "停止" -> vehicleInstance.stopSend();
|
case "停止" -> vehicleInstance.stopSend();
|
||||||
|
@ -201,4 +203,141 @@ public class VehicleInstanceServiceImpl implements VehicleInstanceService {
|
||||||
ReflectUtils.invokeSetter(vehicleData, statusKey, statusValue);
|
ReflectUtils.invokeSetter(vehicleData, statusKey, statusValue);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private final AtomicBoolean unifiedStatus = new AtomicBoolean(Boolean.TRUE);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 一键上线
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public void unifiedOnline () {
|
||||||
|
if (!unifiedStatus.get()){
|
||||||
|
throw new RuntimeException("一键执行的任务正在进行中,请勿再次发布一键执行任务");
|
||||||
|
}
|
||||||
|
new Thread(() -> {
|
||||||
|
unifiedStatus.set(Boolean.FALSE);
|
||||||
|
// 筛选出离线车辆并使用并行流进行上线操作
|
||||||
|
LocalContainer.getOfflineVehicleInstance()
|
||||||
|
.stream()
|
||||||
|
.parallel()
|
||||||
|
.map(VehicleInstance::getVin)
|
||||||
|
.forEach(this::vehicleClientInit);
|
||||||
|
unifiedStatus.set(Boolean.TRUE);
|
||||||
|
}).start();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 一键离线
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public void unifiedOffline () {
|
||||||
|
if (!unifiedStatus.get()){
|
||||||
|
throw new RuntimeException("一键执行的任务正在进行中,请勿再次发布一键执行任务");
|
||||||
|
}
|
||||||
|
new Thread(() -> {
|
||||||
|
unifiedStatus.set(Boolean.FALSE);
|
||||||
|
// 筛选出在线车辆使用并行流操作先停止车辆上报动作再进行车辆离线操作
|
||||||
|
LocalContainer.getOnlineVehicleInstance()
|
||||||
|
.stream()
|
||||||
|
.parallel()
|
||||||
|
.forEach(vehicleInstance -> {
|
||||||
|
vehicleInstance.stopSend();
|
||||||
|
vehicleInstance.closeClient();
|
||||||
|
});
|
||||||
|
unifiedStatus.set(Boolean.TRUE);
|
||||||
|
}).start();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 一键上报
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public void unifiedSend () {
|
||||||
|
if (!unifiedStatus.get()){
|
||||||
|
throw new RuntimeException("一键执行的任务正在进行中,请勿再次发布一键执行任务");
|
||||||
|
}
|
||||||
|
List<VehicleInstance> vehicleInstanceList = LocalContainer.getOnlineVehicleInstance();
|
||||||
|
if (vehicleInstanceList.isEmpty()){
|
||||||
|
throw new RuntimeException("还没有车辆上线,请先让车辆上线");
|
||||||
|
}
|
||||||
|
new Thread(() -> {
|
||||||
|
unifiedStatus.set(Boolean.FALSE);
|
||||||
|
// 先一键重置路径
|
||||||
|
this.unifiedPositionPri ();
|
||||||
|
vehicleInstanceList
|
||||||
|
.stream()
|
||||||
|
.parallel()
|
||||||
|
.forEach(vehicleInstance -> {
|
||||||
|
// 设置车辆档位
|
||||||
|
vehicleInstance.setGear("D");
|
||||||
|
// 开启线程进行上报
|
||||||
|
if(vehicleInstance.getVehicleThread() == null){
|
||||||
|
vehicleInstance.initVehicleThread();
|
||||||
|
}
|
||||||
|
vehicleInstance.startSend();
|
||||||
|
});
|
||||||
|
unifiedStatus.set(Boolean.TRUE);
|
||||||
|
}).start();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 一键重置路径
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public void unifiedPosition () {
|
||||||
|
if (!unifiedStatus.get()){
|
||||||
|
throw new RuntimeException("一键执行的任务正在进行中,请勿再次发布一键执行任务");
|
||||||
|
}
|
||||||
|
new Thread(() -> {
|
||||||
|
unifiedStatus.set(Boolean.FALSE);
|
||||||
|
this.unifiedPositionPri();
|
||||||
|
unifiedStatus.set(Boolean.TRUE);
|
||||||
|
}).start();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void unifiedPositionPri(){
|
||||||
|
// 获取到所有路径
|
||||||
|
List<PositionRouteInfo> positionRouteInfoList = positionRouteService.list();
|
||||||
|
// 路径长度
|
||||||
|
int positionSize = positionRouteInfoList.size();
|
||||||
|
// 随机数
|
||||||
|
Random random = new Random();
|
||||||
|
|
||||||
|
LocalContainer.getOnlineVehicleInstance()
|
||||||
|
.stream()
|
||||||
|
.parallel()
|
||||||
|
.forEach(vehicleInstance -> {
|
||||||
|
// 随机一个路径结果
|
||||||
|
int positionIndex = random.nextInt(0, positionSize);
|
||||||
|
PositionRouteInfo positionRouteInfo = positionRouteInfoList.get(positionIndex);
|
||||||
|
String positionCode = positionRouteInfo.getName();
|
||||||
|
List<PositionModel> positionModelList = JSONArray.parseArray(positionRouteInfo.getRouteData(), String.class)
|
||||||
|
.stream()
|
||||||
|
.map(PositionModel::strBuild)
|
||||||
|
.toList();
|
||||||
|
// 设置车辆路径
|
||||||
|
vehicleInstance.settingPosition(positionModelList);
|
||||||
|
vehicleInstance.setPositionCode(positionCode);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 一键取消上报
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public void unifiedStop () {
|
||||||
|
if (!unifiedStatus.get()){
|
||||||
|
throw new RuntimeException("一键执行的任务正在进行中,请勿再次发布一键执行任务");
|
||||||
|
}
|
||||||
|
new Thread(() -> {
|
||||||
|
unifiedStatus.set(Boolean.FALSE);
|
||||||
|
LocalContainer.getOnlineVehicleInstance()
|
||||||
|
.stream()
|
||||||
|
.parallel()
|
||||||
|
.forEach(VehicleInstance::stopSend);
|
||||||
|
unifiedStatus.set(Boolean.TRUE);
|
||||||
|
}).start();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -205,7 +205,9 @@ public class VehicleInstance {
|
||||||
*/
|
*/
|
||||||
public void startSend() {
|
public void startSend() {
|
||||||
this.msgCode = "上报";
|
this.msgCode = "上报";
|
||||||
|
if (this.vehicleThread != null){
|
||||||
this.vehicleThread.resume();
|
this.vehicleThread.resume();
|
||||||
|
}
|
||||||
log.info("车辆[{}],开始上报", this.getVin());
|
log.info("车辆[{}],开始上报", this.getVin());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -214,7 +216,9 @@ public class VehicleInstance {
|
||||||
*/
|
*/
|
||||||
public void pauseSend() {
|
public void pauseSend() {
|
||||||
this.msgCode = "暂停";
|
this.msgCode = "暂停";
|
||||||
|
if (this.vehicleThread != null) {
|
||||||
this.vehicleThread.pause();
|
this.vehicleThread.pause();
|
||||||
|
}
|
||||||
log.info("车辆[{}],暂停上报", this.getVin());
|
log.info("车辆[{}],暂停上报", this.getVin());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -223,7 +227,9 @@ public class VehicleInstance {
|
||||||
*/
|
*/
|
||||||
public void stopSend() {
|
public void stopSend() {
|
||||||
this.msgCode = "停止";
|
this.msgCode = "停止";
|
||||||
|
if (this.vehicleThread != null){
|
||||||
this.vehicleThread.stop();
|
this.vehicleThread.stop();
|
||||||
|
}
|
||||||
log.info("车辆[{}],停止上报", this.getVin());
|
log.info("车辆[{}],停止上报", this.getVin());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -62,4 +62,12 @@ public class LocalContainer {
|
||||||
public static List<VehicleInstance> getOnlineVehicleInstance(){
|
public static List<VehicleInstance> getOnlineVehicleInstance(){
|
||||||
return vehicleDataMap.values().stream().filter(VehicleInstance::isOnline).toList();
|
return vehicleDataMap.values().stream().filter(VehicleInstance::isOnline).toList();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取离线车辆
|
||||||
|
* @return 离线车辆集合
|
||||||
|
*/
|
||||||
|
public static List<VehicleInstance> getOfflineVehicleInstance(){
|
||||||
|
return vehicleDataMap.values().stream().filter(vehicleInstance -> !vehicleInstance.isOnline()).toList();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1 +0,0 @@
|
||||||
.app-container[data-v-1ee9ff37]{padding:10px 5px 0 10px;background-color:#f4f4f5}.el-row[data-v-1ee9ff37]{&:last-child{margin-bottom:0}}.bg-purple[data-v-1ee9ff37]{background:#f4f4f5}.grid-content[data-v-1ee9ff37]{border-radius:4px;overflow-x:hidden;overflow-y:auto}.grid-content[data-v-1ee9ff37]::-webkit-scrollbar{width:4px}.grid-content[data-v-1ee9ff37]::-webkit-scrollbar-thumb{border-radius:10px;background:rgba(0,0,0,.2)}.grid-content[data-v-1ee9ff37]::-webkit-scrollbar-track{border-radius:0;background:rgba(0,0,0,.1)}.vehicleDiv[data-v-1ee9ff37]{height:50px;margin:0 0 10px 0}.contentMain[data-v-1ee9ff37]{margin-top:10px}.vehicleDataTab[data-v-1ee9ff37]{width:100%;overflow-y:auto;overflow-x:hidden}.vehicleDataTab[data-v-1ee9ff37]::-webkit-scrollbar{width:4px}.vehicleDataTab[data-v-1ee9ff37]::-webkit-scrollbar-thumb{border-radius:10px;background:rgba(0,0,0,.2)}.vehicleDataTab[data-v-1ee9ff37]::-webkit-scrollbar-track{border-radius:0;background:rgba(0,0,0,.1)}.el-form-item__label[data-v-1ee9ff37]{padding:0}.el-form-item[data-v-1ee9ff37]{margin-bottom:5px}
|
|
|
@ -0,0 +1 @@
|
||||||
|
.app-container[data-v-6bed5aa6]{padding:10px 5px 0 10px;background-color:#f4f4f5}.el-row[data-v-6bed5aa6]{&:last-child{margin-bottom:0}}.bg-purple[data-v-6bed5aa6]{background:#f4f4f5}.grid-content[data-v-6bed5aa6]{border-radius:4px;overflow-x:hidden;overflow-y:auto}.grid-content[data-v-6bed5aa6]::-webkit-scrollbar{width:4px}.grid-content[data-v-6bed5aa6]::-webkit-scrollbar-thumb{border-radius:10px;background:rgba(0,0,0,.2)}.grid-content[data-v-6bed5aa6]::-webkit-scrollbar-track{border-radius:0;background:rgba(0,0,0,.1)}.vehicleDiv[data-v-6bed5aa6]{height:50px;margin:0 0 10px 0}.contentMain[data-v-6bed5aa6]{margin-top:10px}.vehicleDataTab[data-v-6bed5aa6]{width:100%;overflow-y:auto;overflow-x:hidden}.vehicleDataTab[data-v-6bed5aa6]::-webkit-scrollbar{width:4px}.vehicleDataTab[data-v-6bed5aa6]::-webkit-scrollbar-thumb{border-radius:10px;background:rgba(0,0,0,.2)}.vehicleDataTab[data-v-6bed5aa6]::-webkit-scrollbar-track{border-radius:0;background:rgba(0,0,0,.1)}.el-form-item__label[data-v-6bed5aa6]{padding:0}.el-form-item[data-v-6bed5aa6]{margin-bottom:5px}
|
|
@ -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.949a0224.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.9c27f141.js rel=preload as=script><link href=/static/js/chunk-elementUI.2491fb2f.js rel=preload as=script><link href=/static/js/chunk-libs.2ec7c235.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.949a0224.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 n,o,c=t[0],i=t[1],l=t[2],f=0,s=[];f<c.length;f++)o=c[f],Object.prototype.hasOwnProperty.call(a,o)&&a[o]&&s.push(a[o][0]),a[o]=0;for(n in i)Object.prototype.hasOwnProperty.call(i,n)&&(e[n]=i[n]);d&&d(t);while(s.length)s.shift()();return u.push.apply(u,l||[]),r()}function r(){for(var e,t=0;t<u.length;t++){for(var r=u[t],n=!0,o=1;o<r.length;o++){var c=r[o];0!==a[c]&&(n=!1)}n&&(u.splice(t--,1),e=i(i.s=r[0]))}return e}var n={},o={runtime:0},a={runtime:0},u=[];function c(e){return i.p+"static/js/"+({}[e]||e)+"."+{"chunk-019c66da":"ded8571e","chunk-5b078ae0":"c5f8595b","chunk-22cea610":"a50359dd","chunk-510f32e7":"18a692c7","chunk-630a64ed":"8295bd3f"}[e]+".js"}function i(t){if(n[t])return n[t].exports;var r=n[t]={i:t,l:!1,exports:{}};return e[t].call(r.exports,r,r.exports,i),r.l=!0,r.exports}i.e=function(e){var t=[],r={"chunk-5b078ae0":1,"chunk-22cea610":1,"chunk-510f32e7":1,"chunk-630a64ed":1};o[e]?t.push(o[e]):0!==o[e]&&r[e]&&t.push(o[e]=new Promise((function(t,r){for(var n="static/css/"+({}[e]||e)+"."+{"chunk-019c66da":"31d6cfe0","chunk-5b078ae0":"ab6918ec","chunk-22cea610":"3c7f5ad9","chunk-510f32e7":"1510e3c5","chunk-630a64ed":"9a9361c6"}[e]+".css",a=i.p+n,u=document.getElementsByTagName("link"),c=0;c<u.length;c++){var l=u[c],f=l.getAttribute("data-href")||l.getAttribute("href");if("stylesheet"===l.rel&&(f===n||f===a))return t()}var s=document.getElementsByTagName("style");for(c=0;c<s.length;c++){l=s[c],f=l.getAttribute("data-href");if(f===n||f===a)return t()}var d=document.createElement("link");d.rel="stylesheet",d.type="text/css",d.onload=t,d.onerror=function(t){var n=t&&t.target&&t.target.src||a,u=new Error("Loading CSS chunk "+e+" failed.\n("+n+")");u.code="CSS_CHUNK_LOAD_FAILED",u.request=n,delete o[e],d.parentNode.removeChild(d),r(u)},d.href=a;var h=document.getElementsByTagName("head")[0];h.appendChild(d)})).then((function(){o[e]=0})));var n=a[e];if(0!==n)if(n)t.push(n[2]);else{var u=new Promise((function(t,r){n=a[e]=[t,r]}));t.push(n[2]=u);var l,f=document.createElement("script");f.charset="utf-8",f.timeout=120,i.nc&&f.setAttribute("nonce",i.nc),f.src=c(e);var s=new Error;l=function(t){f.onerror=f.onload=null,clearTimeout(d);var r=a[e];if(0!==r){if(r){var n=t&&("load"===t.type?"missing":t.type),o=t&&t.target&&t.target.src;s.message="Loading chunk "+e+" failed.\n("+n+": "+o+")",s.name="ChunkLoadError",s.type=n,s.request=o,r[1](s)}a[e]=void 0}};var d=setTimeout((function(){l({type:"timeout",target:f})}),12e4);f.onerror=f.onload=l,document.head.appendChild(f)}return Promise.all(t)},i.m=e,i.c=n,i.d=function(e,t,r){i.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},i.r=function(e){"undefined"!==typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},i.t=function(e,t){if(1&t&&(e=i(e)),8&t)return e;if(4&t&&"object"===typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(i.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var n in e)i.d(r,n,function(t){return e[t]}.bind(null,n));return r},i.n=function(e){var t=e&&e.__esModule?function(){return e["default"]}:function(){return e};return i.d(t,"a",t),t},i.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},i.p="/",i.oe=function(e){throw console.error(e),e};var l=window["webpackJsonp"]=window["webpackJsonp"]||[],f=l.push.bind(l);l.push=t,l=l.slice();for(var s=0;s<l.length;s++)t(l[s]);var d=f;r()})([]);</script><script src=/static/js/chunk-elementUI.2491fb2f.js></script><script src=/static/js/chunk-libs.2ec7c235.js></script><script src=/static/js/app.9c27f141.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.949a0224.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.1fbfed58.js rel=preload as=script><link href=/static/js/chunk-elementUI.2491fb2f.js rel=preload as=script><link href=/static/js/chunk-libs.2ec7c235.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.949a0224.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 n,o,u=t[0],i=t[1],l=t[2],d=0,f=[];d<u.length;d++)o=u[d],Object.prototype.hasOwnProperty.call(a,o)&&a[o]&&f.push(a[o][0]),a[o]=0;for(n in i)Object.prototype.hasOwnProperty.call(i,n)&&(e[n]=i[n]);s&&s(t);while(f.length)f.shift()();return c.push.apply(c,l||[]),r()}function r(){for(var e,t=0;t<c.length;t++){for(var r=c[t],n=!0,o=1;o<r.length;o++){var u=r[o];0!==a[u]&&(n=!1)}n&&(c.splice(t--,1),e=i(i.s=r[0]))}return e}var n={},o={runtime:0},a={runtime:0},c=[];function u(e){return i.p+"static/js/"+({}[e]||e)+"."+{"chunk-019c66da":"ded8571e","chunk-5d512acc":"9e25adb5","chunk-22cea610":"a50359dd","chunk-510f32e7":"18a692c7","chunk-630a64ed":"8295bd3f"}[e]+".js"}function i(t){if(n[t])return n[t].exports;var r=n[t]={i:t,l:!1,exports:{}};return e[t].call(r.exports,r,r.exports,i),r.l=!0,r.exports}i.e=function(e){var t=[],r={"chunk-5d512acc":1,"chunk-22cea610":1,"chunk-510f32e7":1,"chunk-630a64ed":1};o[e]?t.push(o[e]):0!==o[e]&&r[e]&&t.push(o[e]=new Promise((function(t,r){for(var n="static/css/"+({}[e]||e)+"."+{"chunk-019c66da":"31d6cfe0","chunk-5d512acc":"1401b6ed","chunk-22cea610":"3c7f5ad9","chunk-510f32e7":"1510e3c5","chunk-630a64ed":"9a9361c6"}[e]+".css",a=i.p+n,c=document.getElementsByTagName("link"),u=0;u<c.length;u++){var l=c[u],d=l.getAttribute("data-href")||l.getAttribute("href");if("stylesheet"===l.rel&&(d===n||d===a))return t()}var f=document.getElementsByTagName("style");for(u=0;u<f.length;u++){l=f[u],d=l.getAttribute("data-href");if(d===n||d===a)return t()}var s=document.createElement("link");s.rel="stylesheet",s.type="text/css",s.onload=t,s.onerror=function(t){var n=t&&t.target&&t.target.src||a,c=new Error("Loading CSS chunk "+e+" failed.\n("+n+")");c.code="CSS_CHUNK_LOAD_FAILED",c.request=n,delete o[e],s.parentNode.removeChild(s),r(c)},s.href=a;var h=document.getElementsByTagName("head")[0];h.appendChild(s)})).then((function(){o[e]=0})));var n=a[e];if(0!==n)if(n)t.push(n[2]);else{var c=new Promise((function(t,r){n=a[e]=[t,r]}));t.push(n[2]=c);var l,d=document.createElement("script");d.charset="utf-8",d.timeout=120,i.nc&&d.setAttribute("nonce",i.nc),d.src=u(e);var f=new Error;l=function(t){d.onerror=d.onload=null,clearTimeout(s);var r=a[e];if(0!==r){if(r){var n=t&&("load"===t.type?"missing":t.type),o=t&&t.target&&t.target.src;f.message="Loading chunk "+e+" failed.\n("+n+": "+o+")",f.name="ChunkLoadError",f.type=n,f.request=o,r[1](f)}a[e]=void 0}};var s=setTimeout((function(){l({type:"timeout",target:d})}),12e4);d.onerror=d.onload=l,document.head.appendChild(d)}return Promise.all(t)},i.m=e,i.c=n,i.d=function(e,t,r){i.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},i.r=function(e){"undefined"!==typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},i.t=function(e,t){if(1&t&&(e=i(e)),8&t)return e;if(4&t&&"object"===typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(i.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var n in e)i.d(r,n,function(t){return e[t]}.bind(null,n));return r},i.n=function(e){var t=e&&e.__esModule?function(){return e["default"]}:function(){return e};return i.d(t,"a",t),t},i.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},i.p="/",i.oe=function(e){throw console.error(e),e};var l=window["webpackJsonp"]=window["webpackJsonp"]||[],d=l.push.bind(l);l.push=t,l=l.slice();for(var f=0;f<l.length;f++)t(l[f]);var s=d;r()})([]);</script><script src=/static/js/chunk-elementUI.2491fb2f.js></script><script src=/static/js/chunk-libs.2ec7c235.js></script><script src=/static/js/app.1fbfed58.js></script></body></html>
|
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
Loading…
Reference in New Issue