zxd-更新项目

master
张小东 2023-12-06 08:06:57 +08:00
parent 4680f6838e
commit e54a42be3b
11 changed files with 184 additions and 300 deletions

View File

@ -1,9 +0,0 @@
import request from '@/utils/request'
// 电池型号
export function getBatteryList() {
return request({
url: '/trajectory/vehicle/batteryList',
method: 'get'
})
}

View File

@ -1,9 +0,0 @@
import request from '@/utils/request'
// 电池厂商
export function getBatterMerchantList() {
return request({
url: '/trajectory/vehicle/batteryMerchantList',
method: 'get'
})
}

View File

@ -1,9 +0,0 @@
import request from '@/utils/request'
// 电机型号
export function getMotorList() {
return request({
url: '/trajectory/vehicle/motorList',
method: 'get'
})
}

View File

@ -1,9 +0,0 @@
import request from '@/utils/request'
// 电机厂商
export function getMotorMerchantList() {
return request({
url: '/trajectory/vehicle/motorMerchantList',
method: 'get'
})
}

View File

@ -1,8 +0,0 @@
import request from '@/utils/request'
export function getTrackList(vehicleId) {
return request({
url: '/trajectory/track/trackList?vehicleId=' + vehicleId,
method: 'get'
})
}

View File

@ -6,6 +6,13 @@ export function getVehicleList() {
method: 'get' method: 'get'
}) })
} }
// 车辆类型
export function getVehicleType() {
return request({
url: '/trajectory/vehicle/vehicleTypeList',
method: 'get'
})
}
// 删除车辆 // 删除车辆
export function deleteVehicle(vehicleId) { export function deleteVehicle(vehicleId) {
@ -18,7 +25,7 @@ export function deleteVehicle(vehicleId) {
// 车辆详情 // 车辆详情
export function getVehicleByVehicleId(vehicleId) { export function getVehicleByVehicleId(vehicleId) {
return request({ return request({
url: '/trajectory/vehicle/getVehicleByVehicleId?vehicleId=' + vehicleId, url: '/trajectory/vehicle/findVehicleById?vehicleId=' + vehicleId,
method: 'get' method: 'get'
}) })
} }
@ -27,20 +34,11 @@ export function getVehicleByVehicleId(vehicleId) {
export function updateVehicle(data) { export function updateVehicle(data) {
return request({ return request({
url: '/trajectory/vehicle/updateVehicle', url: '/trajectory/vehicle/updateVehicle',
method: 'post', method: 'put',
data: data data: data
}) })
} }
// 新增车辆 // 新增车辆
export function insertVehicle(data) { export function insertVehicle(data) {
return request({ return request({
@ -50,5 +48,12 @@ export function insertVehicle(data) {
}) })
} }
// 实时轨迹
export function getVehicleTrack(vehicleVin) {
return request({
url: '/trajectory/track/vehicleTrack?vehicleVin='+vehicleVin,
method: 'get'
})
}

View File

@ -1,9 +0,0 @@
import request from '@/utils/request'
// 车辆类型
export function getVehicleTypeList() {
return request({
url: '/trajectory/vehicle/vehicleTypeList',
method: 'get'
})
}

View File

@ -1,103 +1,3 @@
<template>
<div>
<div id="container"></div>
</div>
</template>
<script>
import AMapLoader from "@amap/amap-jsapi-loader";
import { getTrackList } from '@/api/trajectory/track'
export default {
name: 'MapContainer',
data() {
return {
AMap: null,
map: null,
carMarker: null, // marker
track:[]
};
},
created() {
this.getTrack()
},
methods: {
getTrack() {
//
const vehicleId = this.$route.params.vehicleId
getTrackList(vehicleId).then(res => {
console.log(res)
this.track = res.data
//
this.updateCarLocation(this.track[0])
})
},
initMap() {
AMapLoader.load({
key: "6911d4b3d9f7745cfed4ab0c87ad9b3f",
version: "2.0",
"plugins": [
"AMap.Scale",
"AMap.ToolBar",
"AMap.MoveAnimation"
],
}).then((AMap) => {
this.AMap = AMap;
this.map = new AMap.Map("container", {
viewMode: "2D",
zoom: 13,
center: [116.478935,39.997761],
resizeEnable: true
});
this.map.setFitView();
}).catch(e => {
console.log(e);
})
},
updateCarLocation(carLocation) {
if (!this.carMarker) {
// marker
this.carMarker = new this.AMap.Marker({
map: this.map,
icon: "https://a.amap.com/jsapi_demos/static/demo-center-v2/car.png",
offset: new this.AMap.Pixel(-13, -26),
});
}
const { latitude, longitude } = carLocation;
const carPosition = [longitude, latitude];
// marker
this.carMarker.setPosition(carPosition);
},
},
mounted() {
this.initMap();
this.getTrack();
//
setInterval(() => {
if (this.track.length > 0) {
//
this.updateCarLocation(this.track[0])
//
this.track.shift()
}
}, 500); // 0.5
},
}
</script>
<style scoped>
#container {
padding: 0px;
margin: 0px;
width: 100%;
height: 1000px;
}
</style>
<!--<template>--> <!--<template>-->
<!-- <div>--> <!-- <div>-->
<!-- <div id="container"></div>--> <!-- <div id="container"></div>-->
@ -106,6 +6,7 @@ export default {
<!--<script>--> <!--<script>-->
<!--import AMapLoader from "@amap/amap-jsapi-loader";--> <!--import AMapLoader from "@amap/amap-jsapi-loader";-->
<!--import { getVehicleTrack } from '@/api/trajectory/vehicle'-->
<!--export default {--> <!--export default {-->
<!-- name: 'MapContainer',--> <!-- name: 'MapContainer',-->
@ -114,9 +15,23 @@ export default {
<!-- AMap: null,--> <!-- AMap: null,-->
<!-- map: null,--> <!-- map: null,-->
<!-- carMarker: null, // marker--> <!-- carMarker: null, // marker-->
<!-- track:[]-->
<!-- };--> <!-- };-->
<!-- },--> <!-- },-->
<!-- created() {-->
<!-- this.getTrack()-->
<!-- },-->
<!-- methods: {--> <!-- methods: {-->
<!-- getTrack() {-->
<!-- // -->
<!-- const vehicleVin = this.$route.params.vehicleVin-->
<!-- getVehicleTrack(vehicleVin).then(res => {-->
<!-- console.log(res)-->
<!-- this.track = res.data-->
<!-- // -->
<!-- this.updateCarLocation(this.track[0])-->
<!-- })-->
<!-- },-->
<!-- initMap() {--> <!-- initMap() {-->
<!-- AMapLoader.load({--> <!-- AMapLoader.load({-->
<!-- key: "6911d4b3d9f7745cfed4ab0c87ad9b3f",--> <!-- key: "6911d4b3d9f7745cfed4ab0c87ad9b3f",-->
@ -160,26 +75,17 @@ export default {
<!-- },--> <!-- },-->
<!-- mounted() {--> <!-- mounted() {-->
<!-- this.initMap();--> <!-- this.initMap();-->
<!-- this.getTrack();-->
<!-- // -->
<!-- const carLocationData = [-->
<!-- { latitude: 39.988, longitude: 116.432 },-->
<!-- { latitude: 39.989, longitude: 116.434 },-->
<!-- { latitude: 39.990, longitude: 116.436 },-->
<!-- // ...-->
<!-- ];-->
<!-- let index = 0;-->
<!-- // --> <!-- // -->
<!-- setInterval(() => {--> <!-- setInterval(() => {-->
<!-- this.updateCarLocation(carLocationData[index]);--> <!-- if (this.track.length > 0) {-->
<!-- // -->
<!-- index++;--> <!-- this.updateCarLocation(this.track[0])-->
<!-- if (index >= carLocationData.length) {--> <!-- // -->
<!-- index = 0;--> <!-- this.track.shift()-->
<!-- }--> <!-- }-->
<!-- }, 500); // 5--> <!-- }, 500); // 0.5-->
<!-- },--> <!-- },-->
<!--}--> <!--}-->
<!--</script>--> <!--</script>-->
@ -189,6 +95,100 @@ export default {
<!-- padding: 0px;--> <!-- padding: 0px;-->
<!-- margin: 0px;--> <!-- margin: 0px;-->
<!-- width: 100%;--> <!-- width: 100%;-->
<!-- height: 800px;--> <!-- height: 1000px;-->
<!--}--> <!--}-->
<!--</style>--> <!--</style>-->
<template>
<div>
<div id="container"></div>
</div>
</template>
<script>
import AMapLoader from "@amap/amap-jsapi-loader";
export default {
name: 'MapContainer',
data() {
return {
AMap: null,
map: null,
carMarker: null, // marker
};
},
methods: {
initMap() {
AMapLoader.load({
key: "6911d4b3d9f7745cfed4ab0c87ad9b3f",
version: "2.0",
"plugins": [
"AMap.Scale",
"AMap.ToolBar",
"AMap.MoveAnimation"
],
}).then((AMap) => {
this.AMap = AMap;
this.map = new AMap.Map("container", {
viewMode: "2D",
zoom: 13,
center: [116.478935,39.997761],
resizeEnable: true
});
this.map.setFitView();
}).catch(e => {
console.log(e);
})
},
updateCarLocation(carLocation) {
if (!this.carMarker) {
// marker
this.carMarker = new this.AMap.Marker({
map: this.map,
icon: "https://a.amap.com/jsapi_demos/static/demo-center-v2/car.png",
offset: new this.AMap.Pixel(-13, -26),
});
}
const { latitude, longitude } = carLocation;
const carPosition = [longitude, latitude];
// marker
this.carMarker.setPosition(carPosition);
},
},
mounted() {
this.initMap();
//
const carLocationData = [
{ latitude: 39.988, longitude: 116.432 },
{ latitude: 39.989, longitude: 116.434 },
{ latitude: 39.990, longitude: 116.436 },
// ...
];
let index = 0;
//
setInterval(() => {
this.updateCarLocation(carLocationData[index]);
index++;
if (index >= carLocationData.length) {
index = 0;
}
}, 500); // 5
},
}
</script>
<style scoped>
#container {
padding: 0px;
margin: 0px;
width: 100%;
height: 800px;
}
</style>

View File

@ -8,36 +8,25 @@
<el-form-item label="车辆VIN"> <el-form-item label="车辆VIN">
<el-input v-model="form.vehicleVin"></el-input> <el-input v-model="form.vehicleVin"></el-input>
</el-form-item> </el-form-item>
<el-form-item label="车辆拍照">
<el-input v-model="form.vehiclePlateNumber"></el-input>
</el-form-item>
<el-form-item label="车辆品牌">
<el-input v-model="form.vehicleBrand"></el-input>
</el-form-item>
<el-form-item label="车辆类型"> <el-form-item label="车辆类型">
<el-select v-model="form.vehicleTypeName" placeholder="请选择类型"> <el-select v-model="form.vehicleTypeId" placeholder="请选择类型">
<el-option v-for="item in vehicleType" :key="item.vehicleTypeId" :label="item.vehicleTypeName" :value="item.vehicleTypeId"></el-option> <el-option v-for="item in vehicleType" :key="item.vehicleTypeId" :label="item.vehicleTypeName" :value="item.vehicleTypeId"></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="电机厂商"> <el-form-item label="电子围栏">
<el-select v-model="form.motorMerchantName" placeholder="请选择电机厂商"> <el-input v-model="form.wallId"></el-input>
<el-option v-for="item in motorMerchant" :key="item.motorMerchantId" :label="item.motorMerchantName" :value="item.motorMerchantId"></el-option>
</el-select>
</el-form-item> </el-form-item>
<el-form-item label="电机"> <el-form-item label="电机厂商">
<el-select v-model="form.motorName" placeholder="请选择电机"> <el-input v-model="form.motorMerchant"></el-input>
<el-option v-for="item in motor" :key="item.motorId" :label="item.motorName" :value="item.motorId"></el-option>
</el-select>
</el-form-item> </el-form-item>
<el-form-item label="电池厂商"> <el-form-item label="电池厂商">
<el-select v-model="form.batteryMerchantName" placeholder="请选择电池厂商"> <el-input v-model="form.batteryMerchant"></el-input>
<el-option v-for="item in batteryMerchant" :key="item.batteryMerchantId" :label="item.batteryMerchantName" :value="item.batteryMerchantId"></el-option> </el-form-item>
</el-select> <el-form-item label="电机">
<el-input v-model="form.motor"></el-input>
</el-form-item> </el-form-item>
<el-form-item label="电池"> <el-form-item label="电池">
<el-select v-model="form.batteryName" placeholder="请选择电池"> <el-input v-model="form.battery"></el-input>
<el-option v-for="item in battery" :key="item.batteryId" :label="item.batteryName" :value="item.batteryId"></el-option>
</el-select>
</el-form-item> </el-form-item>
</el-form> </el-form>
<el-button @click="dialogVisible2 = false"> </el-button> <el-button @click="dialogVisible2 = false"> </el-button>
@ -60,15 +49,9 @@
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="车辆车牌号" width="180"> <el-table-column label="电子围栏" width="180">
<template slot-scope="scope"> <template slot-scope="scope">
<span style="margin-left: 10px">{{ scope.row.vehiclePlateNumber }}</span> <span style="margin-left: 10px">{{ scope.row.wallId }}</span>
</template>
</el-table-column>
<el-table-column label="品牌名称" width="180">
<template slot-scope="scope">
<span style="margin-left: 10px">{{ scope.row.vehicleBrand }}</span>
</template> </template>
</el-table-column> </el-table-column>
@ -80,37 +63,31 @@
<el-table-column label="电机制造商名称" width="180"> <el-table-column label="电机制造商名称" width="180">
<template slot-scope="scope"> <template slot-scope="scope">
<span style="margin-left: 10px">{{ scope.row.motorMerchantName }}</span> <span style="margin-left: 10px">{{ scope.row.motorMerchant }}</span>
</template>
</el-table-column>
<el-table-column label="电机名称" width="180">
<template slot-scope="scope">
<span style="margin-left: 10px">{{ scope.row.motorName }}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="电池制造商名称" width="180"> <el-table-column label="电池制造商名称" width="180">
<template slot-scope="scope"> <template slot-scope="scope">
<span style="margin-left: 10px">{{ scope.row.batteryMerchantName }}</span> <span style="margin-left: 10px">{{ scope.row.batteryMerchant }}</span>
</template>
</el-table-column>
<el-table-column label="电机名称" width="180">
<template slot-scope="scope">
<span style="margin-left: 10px">{{ scope.row.motor }}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="电池名称" width="180"> <el-table-column label="电池名称" width="180">
<template slot-scope="scope"> <template slot-scope="scope">
<span style="margin-left: 10px">{{ scope.row.batteryName }}</span> <span style="margin-left: 10px">{{ scope.row.battery }}</span>
</template>
</el-table-column>
<el-table-column label="车辆状态" width="180">
<template slot-scope="scope">
<span style="margin-left: 10px">{{ scope.row.vehicleStatus }}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="操作" width="300"> <el-table-column label="操作" width="300">
<template slot-scope="scope"> <template slot-scope="scope">
<el-button size="small" type="danger" @click="handleTrack(scope.row.vehicleId)"></el-button> <el-button size="small" type="danger" @click="handleTrack(scope.row.vehicleVin)"></el-button>
<el-button size="small" type="danger" @click="handleEdit(scope.row.vehicleId)"></el-button> <el-button size="small" type="danger" @click="handleEdit(scope.row.vehicleId)"></el-button>
@ -125,39 +102,25 @@
<el-form-item label="车辆VIN"> <el-form-item label="车辆VIN">
<el-input v-model="vehicle.vehicleVin"></el-input> <el-input v-model="vehicle.vehicleVin"></el-input>
</el-form-item> </el-form-item>
<el-form-item label="车辆车牌号">
<el-input v-model="vehicle.vehiclePlateNumber"></el-input>
</el-form-item>
<el-form-item label="车辆品牌">
<el-input v-model="vehicle.vehicleBrand"></el-input>
</el-form-item>
<el-form-item label="车辆类型"> <el-form-item label="车辆类型">
<el-select v-model="vehicle.vehicleTypeName" placeholder="请选择类型"> <el-select v-model="vehicle.vehicleTypeId" placeholder="请选择类型">
<el-option v-for="item in vehicleType" :key="item.vehicleTypeId" :label="item.vehicleTypeName" :value="item.vehicleTypeId"></el-option> <el-option v-for="item in vehicleType" :label="item.vehicleTypeName" :key="item.vehicleTypeId" :value="item.vehicleTypeId"></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="电子围栏">
<el-input v-model="vehicle.wallId"></el-input>
</el-form-item>
<el-form-item label="电机厂商"> <el-form-item label="电机厂商">
<el-select v-model="vehicle.motorMerchantName" placeholder="请选择电机厂家"> <el-input v-model="vehicle.motorMerchant"></el-input>
<el-option v-for="item in motorMerchant" :key="item.motorMerchantId" :label="item.motorMerchantName" :value="item.motorMerchantId"></el-option>
</el-select>
</el-form-item>
<el-form-item label="电机">
<el-select v-model="vehicle.motorName" placeholder="请选择电机">
<el-option v-for="item in motor" :key="item.motorId" :label="item.motorName" :value="item.motorId"></el-option>
</el-select>
</el-form-item> </el-form-item>
<el-form-item label="电池厂商"> <el-form-item label="电池厂商">
<el-select v-model="vehicle.batteryMerchantName" placeholder="请选择电池厂商"> <el-input v-model="vehicle.batteryMerchant"></el-input>
<el-option v-for="item in batteryMerchant" :key="item.batteryMerchantId" :label="item.batteryMerchantName" :value="item.batteryMerchantId"></el-option>
</el-select>
</el-form-item> </el-form-item>
<el-form-item label="电池"> <el-form-item label="电机型号">
<el-select v-model="vehicle.batteryName" placeholder="请选择电池"> <el-input v-model="vehicle.motor"></el-input>
<el-option v-for="item in battery" :key="item.batteryId" :label="item.batteryName" :value="item.batteryId"></el-option>
</el-select>
</el-form-item> </el-form-item>
<el-form-item label="状态"> <el-form-item label="电池编号">
<el-input v-model="vehicle.vehicleStatus"></el-input> <el-input v-model="vehicle.battery"></el-input>
</el-form-item> </el-form-item>
</el-form> </el-form>
<el-button @click="dialogVisible = false">取消</el-button> <el-button @click="dialogVisible = false">取消</el-button>
@ -176,35 +139,31 @@
<script> <script>
import { import {
getVehicleList, deleteVehicle, getVehicleByVehicleId, insertVehicle, updateVehicle } from '@/api/trajectory/vehicle' getVehicleList,
import { getVehicleTypeList } from '@/api/trajectory/vehicleType' deleteVehicle,
import { getMotorMerchantList } from '@/api/trajectory/motorMerchant' getVehicleByVehicleId,
import { getMotorList } from '@/api/trajectory/motor' insertVehicle,
import { getBatterMerchantList } from '@/api/trajectory/batteryMerchant' updateVehicle,
import { getBatteryList } from '@/api/trajectory/battery' getVehicleType
} from '@/api/trajectory/vehicle'
export default { export default {
data() { data() {
return { return {
tableData: [],// tableData: [],//
vehicleType: [], // vehicleType: [], //
motorMerchant: [], //
motor: [], //
batteryMerchant: [], //
battery: [], //
dialogVisible: false, // dialogVisible: false, //
dialogVisible2: false, // dialogVisible2: false, //
vehicle: { // vehicle: { //
vehicleId: null, vehicleId: null,
vehicleVin: null, vehicleVin: null,
vehiclePlateNumber: null, vehicleTypeId:null,
vehicleBrand: null, wallId: null,
vehicleTypeName: null, vehicleTypeName: null,
batteryMerchantName: null, batteryMerchant: null,
batteryName: null, battery: null,
motorMerchantName: null, motorMerchant: null,
motorName: null, motor: null
vehicleStatus: null
},// },//
form:{} // form:{} //
} }
@ -212,10 +171,6 @@ export default {
created() { created() {
this.getVehicleList() this.getVehicleList()
this.getVehicleTypeList() this.getVehicleTypeList()
this.getMotorMerchantList()
this.getMotorList()
this.getBatteryMerchantList()
this.getBatteryList()
}, },
mounted() { mounted() {
}, },
@ -243,38 +198,15 @@ export default {
}, },
// //
getVehicleTypeList() { getVehicleTypeList() {
getVehicleTypeList().then(res => { getVehicleType().then(res => {
this.vehicleType = res.data this.vehicleType = res.data
}) })
}, },
//
getMotorMerchantList() {
getMotorMerchantList().then(res => {
this.motorMerchant = res.data
})
},
//
getMotorList() {
getMotorList().then(res => {
this.motor = res.data
})
},
//
getBatteryMerchantList() {
getBatterMerchantList().then(res => {
this.batteryMerchant = res.data
})
},
//
getBatteryList() {
getBatteryList().then(res => {
this.battery = res.data
})
},
// //
updateVehicle() { updateVehicle() {
updateVehicle(this.vehicle).then(res => { updateVehicle(this.vehicle).then(res => {
this.$message.success(res.data) this.$message.success(res.data)
this.getVehicleList()
}) })
}, },
handleAdd() { handleAdd() {
@ -289,11 +221,11 @@ export default {
this.getVehicleList(); this.getVehicleList();
}) })
}, },
handleTrack(vehicleId) { handleTrack(vehicleVin) {
// //
this.$router.push({ this.$router.push({
name: 'trackMap', // 使 name: 'trackMap', // 使
params: { vehicleId: vehicleId } // params: { vehicleVin: vehicleVin } //
}); });
} }
} }

View File

@ -35,7 +35,7 @@ module.exports = {
proxy: { proxy: {
// detail: https://cli.vuejs.org/config/#devserver-proxy // detail: https://cli.vuejs.org/config/#devserver-proxy
[process.env.VUE_APP_BASE_API]: { [process.env.VUE_APP_BASE_API]: {
target: `http://localhost:8080`, target: `http://localhost:8085`,
changeOrigin: true, changeOrigin: true,
pathRewrite: { pathRewrite: {
['^' + process.env.VUE_APP_BASE_API]: '' ['^' + process.env.VUE_APP_BASE_API]: ''