From 635816d68e5f45e8c144beb955e1a698a69d6829 Mon Sep 17 00:00:00 2001
From: quanyawei <401863037@qq.com>
Date: Wed, 10 Jan 2024 17:05:35 +0800
Subject: [PATCH] 添加经纬度选择
---
src/views/car/index.vue | 940 ++++++++++++++++++++++++++++++++++++++++++----------------
1 files changed, 682 insertions(+), 258 deletions(-)
diff --git a/src/views/car/index.vue b/src/views/car/index.vue
index fe3e768..617a935 100644
--- a/src/views/car/index.vue
+++ b/src/views/car/index.vue
@@ -1,13 +1,10 @@
<template>
<div class="main_body">
- <el-container
- style="height: 100%"
- >
+ <el-container style="height: 100%">
<el-aside
- v-if="this.$store.state.aside"
- width="300px"
- style="background-color: rgb(238, 241, 246);padding-top:10px"
-
+ v-if="$store.state.aside"
+ width="300px"
+ style="background-color: rgb(238, 241, 246); padding-top: 10px"
>
<span
style="
@@ -16,16 +13,20 @@
font-weight: 500;
color: rgb(64, 158, 255);
"
- >���������������</span
- >
+ >���������������</span>
<el-menu style="margin-top: 10px">
<el-menu-item
-
- v-for="(item,index) in defaultData"
- :key="index"
- style="display: flex;justify-content: space-between;align-items: center;padding-right: 0;border-bottom:1px solid #eee"
- :index="(index+1 + '-' + index + 1).toString()"
- @click="changeCarData(item)"
+ v-for="(item, index) in defaultData"
+ :key="index"
+ style="
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ padding-right: 0;
+ border-bottom: 1px solid #eee;
+ "
+ :index="(index + 1 + '-' + index + 1).toString()"
+ @click="changeCarData(item)"
>
<span>{{ item.name }}</span>
<i
@@ -42,7 +43,7 @@
</el-menu-item>
</el-menu>
</el-aside>
- <el-dialog> </el-dialog>
+ <el-dialog />
<el-container style="position: relative">
<div class="carTop">
<span style="float: left; margin: 1px 10px 0 0">
@@ -51,30 +52,33 @@
type="primary"
icon="el-icon-setting"
@click="dialogFormVisible = true"
- >6���������</el-button
- >
+ >6���������</el-button>
</span>
<span
-
- v-for="(item, index) in snesorParams"
- :key="index"
- class="left"
- :class="{ click: changeColor == index }"
- @click="changeCode(index)"
+ v-for="(item, index) in snesorParams"
+ :key="index"
+ class="left"
+ :class="{ click: changeColor == index }"
+ @click="changeCode(index)"
>{{ item }}
</span>
<span
- v-for="(item,index) in viewOptions"
- :key="index+ '-only'"
- class="right"
- :class="{ click: changeColor1 == index }"
- @click="changeCode1(index)"
+ v-for="(item, index) in viewOptions"
+ :key="index + '-only'"
+ class="right"
+ :class="{ click: changeColor1 == index }"
+ @click="changeCode1(index)"
>{{ item }}
</span>
- <span v-if="webSocketView" style="float: right; margin: 2px 10px 0 0">
- <el-button size="medium" type="primary" @click="wsStart()"
- >������������</el-button
- >
+ <span
+ v-if="webSocketView"
+ style="float: right; margin: 2px 10px 0 0"
+ >
+ <el-button
+ size="medium"
+ type="primary"
+ @click="wsStart()"
+ >������������</el-button>
</span>
<!-- <el-date-picker
v-if="historyView"
@@ -109,16 +113,119 @@
<!-- @click.native="dataChangeClick"-->
<!-- />-->
<!-- </el-select>-->
+
+ <el-button
+ type="primary"
+ size="small"
+ style="margin-left: 1.5rem"
+ @click="insertL"
+ >
+ ������
+ </el-button>
+ <el-input
+ v-model="inputnum"
+ placeholder="���������������"
+ class="inputNum"
+ clearable
+ />
+
+ <div class="insLu">
+ <el-upload
+ ref="upload"
+ class="upload-demo"
+ action=""
+ :on-change="handleChange"
+ :on-remove="handleRemove"
+ :file-list="fileList"
+ :auto-upload="false"
+ :limit="1"
+ >
+ <el-button
+ slot="trigger"
+ size="small"
+ type="primary"
+ >
+ ������������
+ </el-button>
+ <div
+ slot="tip"
+ class="el-upload__tip"
+ style="color: red"
+ >
+ ������������������������(���������������)
+ </div>
+ </el-upload>
+ <!-- <div style="display: flex">
+ <span class="statspan">������������������:</span
+ ><el-input v-model="startL" style="width: 12rem"></el-input>
+ </div>
+ <div style="display: flex">
+ <span class="statspan">������������������:</span
+ ><el-input v-model="endL" style="width: 12rem"></el-input>
+ </div>
+ <div style="display: flex">
+ <span class="statspan">������������:</span
+ ><el-input
+ v-model="Lname"
+ style="width: 12rem; margin-left: 1.7rem"
+ ></el-input>
+ </div>
+ <div style="display: flex; margin-left: 4rem">
+ <el-button type="primary" @click="insLuDuan">������</el-button>
+ <el-button @click="insqu">������</el-button>
+ <el-button @click="qnull">������</el-button>
+ </div> -->
+ <el-table
+ :data="tableData"
+ style="width: 100%"
+ >
+ <el-table-column
+ label="������������"
+ width="180"
+ >
+ <template slot-scope="scope">
+ <span style="margin-left: 10px">{{ scope.row.start }}</span>
+ </template>
+ </el-table-column>
+ <el-table-column
+ label="������������"
+ width="180"
+ >
+ <template slot-scope="scope">
+ <span style="margin-left: 10px">{{ scope.row.end }}</span>
+ </template>
+ </el-table-column>
+ </el-table>
+ <div style="display: flex">
+ <span class="statspan">������������:</span><el-input
+ v-model="Lname"
+ style="width: 12rem; margin-left: 1.7rem"
+ />
+ </div>
+ <div style="display: flex; margin-left: 4rem">
+ <el-button
+ type="primary"
+ @click="insLuDuan"
+ >
+ ������
+ </el-button>
+ <el-button @click="insqu">
+ ������
+ </el-button>
+ <el-button @click="qnull">
+ ������
+ </el-button>
+ </div>
+ </div>
<el-date-picker
- style="float:right;margin-right:10px;"
- @change="dateChange"
- v-model="dateValue"
- type="datetimerange"
- :picker-options="threeOptions"
- range-separator="���"
- start-placeholder="������������"
- end-placeholder="������������">
- </el-date-picker>
+ v-model="dateValue"
+ style="float: right; margin-right: 10px"
+ type="datetimerange"
+ range-separator="���"
+ start-placeholder="������������"
+ end-placeholder="������������"
+ @change="dateChange"
+ />
<!-- ������/��������������������� -->
<el-select
v-model="dataTypeValue"
@@ -131,15 +238,23 @@
"
>
<el-option
- v-for="item in dataTypeList"
- :key="item.value"
- :label="item.label"
- :value="item.value"
+ v-for="item in dataTypeList"
+ :key="item.value"
+ :label="item.label"
+ :value="item.value"
/>
</el-select>
</div>
- <div v-if="noneData" class="noneData">������������������������������</div>
- <div id="map_container" v-loading="loading" />
+ <div
+ v-if="noneData"
+ class="noneData"
+ >
+ ������������������������������
+ </div>
+ <div
+ id="map_container"
+ v-loading="loading"
+ />
<!-- ������������ -->
</el-container>
</el-container>
@@ -155,71 +270,128 @@
<!-- <img src="/img/pollutionlevel.png" class="sensorLevel">
<div id="cpm">���������������������</div> -->
<!-- 6��������������� -->
- <el-dialog title="6���������" :visible.sync="dialogFormVisible" width="1000px">
- <el-descriptions title="������6���" :column="3" border>
+ <el-dialog
+ title="6���������"
+ :visible.sync="dialogFormVisible"
+ width="1000px"
+ >
+ <el-descriptions
+ title="������6���"
+ :column="3"
+ border
+ >
<el-descriptions-item
label="PM2.5 | ug/m��"
label-class-name="my-label"
content-class-name="my-content"
- >22</el-descriptions-item
>
- <el-descriptions-item label="PM10 | ug/m��">34</el-descriptions-item>
- <el-descriptions-item label="SO2 | ug/m��">4</el-descriptions-item>
- <el-descriptions-item label="NO2 | ug/m��">16</el-descriptions-item>
- <el-descriptions-item label="CO | mg/m��">0.5</el-descriptions-item>
- <el-descriptions-item label="O3 | ug/m��">149</el-descriptions-item>
+ 22
+ </el-descriptions-item>
+ <el-descriptions-item label="PM10 | ug/m��">
+ 34
+ </el-descriptions-item>
+ <el-descriptions-item label="SO2 | ug/m��">
+ 4
+ </el-descriptions-item>
+ <el-descriptions-item label="NO2 | ug/m��">
+ 16
+ </el-descriptions-item>
+ <el-descriptions-item label="CO | mg/m��">
+ 0.5
+ </el-descriptions-item>
+ <el-descriptions-item label="O3 | ug/m��">
+ 149
+ </el-descriptions-item>
</el-descriptions>
<!-- <el-descriptions title="���������������" border>
</el-descriptions> -->
<div
-
- style="font-size: 16px;font-weight: 700;margin:10px 0 20px 0;font-size: 16px;
- font-weight: 700;color: #303133;"
- >���������������</div>
- <el-table :data="sensorTableData" border>
+ style="
+ font-size: 16px;
+ font-weight: 700;
+ margin: 10px 0 20px 0;
+ font-size: 16px;
+ font-weight: 700;
+ color: #303133;
+ "
+ >
+ ���������������
+ </div>
+ <el-table
+ :data="sensorTableData"
+ border
+ >
<el-table-column
- prop="sensorName"
- label="������"
+ prop="sensorName"
+ label="������"
/>
<el-table-column
- prop="unit"
- label="������"
+ prop="unit"
+ label="������"
/>
<el-table-column label="������">
<template slot-scope="scope">
- <el-input v-model="scope.row.tab1" placeholder="���������������" />
+ <el-input
+ v-model="scope.row.tab1"
+ placeholder="���������������"
+ />
<!-- <span v-show="!scope.row.show">{{ scope.row.tab1 }}</span> -->
</template>
</el-table-column>
<el-table-column label="������">
<template slot-scope="scope">
- <el-input v-model="scope.row.tab2" placeholder="���������������" />
+ <el-input
+ v-model="scope.row.tab2"
+ placeholder="���������������"
+ />
</template>
</el-table-column>
<el-table-column label="������">
<template slot-scope="scope">
- <el-input v-model="scope.row.tab3" placeholder="���������������" />
+ <el-input
+ v-model="scope.row.tab3"
+ placeholder="���������������"
+ />
</template>
</el-table-column>
<el-table-column label="������">
<template slot-scope="scope">
- <el-input v-model="scope.row.tab4" placeholder="���������������" />
+ <el-input
+ v-model="scope.row.tab4"
+ placeholder="���������������"
+ />
</template>
</el-table-column>
<el-table-column label="������">
<template slot-scope="scope">
- <el-input v-model="scope.row.tab5" placeholder="���������������" />
+ <el-input
+ v-model="scope.row.tab5"
+ placeholder="���������������"
+ />
</template>
</el-table-column>
<el-table-column label="������">
<template slot-scope="scope">
- <el-input v-model="scope.row.tab6" placeholder="���������������" />
+ <el-input
+ v-model="scope.row.tab6"
+ placeholder="���������������"
+ />
</template>
</el-table-column>
</el-table>
- <div slot="footer" class="dialog-footer">
- <el-button @click="dialogFormVisible = false">��� ���</el-button>
- <el-button type="primary" @click="customLevel">��� ���</el-button>
+ <div
+ slot="footer"
+ class="dialog-footer"
+ >
+ <el-button @click="dialogFormVisible = false">
+ ��� ���
+ </el-button>
+ <el-button
+ type="primary"
+ @click="customLevel"
+ >
+ ��� ���
+ </el-button>
</div>
</el-dialog>
</div>
@@ -228,6 +400,7 @@
import $ from 'jquery'
import '@/assets/icon/iconfont.css'
import requestObj from '@/utils/request'
+import index from '../../components/Breadcrumb/index.vue'
var GPS = {
PI: 3.14159265358979324,
x_pi: (3.14159265358979324 * 3000.0) / 180.0,
@@ -407,11 +580,17 @@
2.0) /
3.0
return ret
- },
+ }
}
export default {
- data() {
+ components: { index },
+ data () {
return {
+ inputnum: 50,
+ tableData: [],
+ fileList: [],
+ file: '',
+ insdialogVisible: false,
bdLon: null,
bdLat: null,
loading: true,
@@ -423,7 +602,7 @@
'CO',
'O3',
'TVOC',
- '���������',
+ '���������'
],
changeColor: 0,
changeColor1: 0,
@@ -432,39 +611,36 @@
dataType: 'history',
responseJSON: null,
radio1: null,
- viewOptions: [
- '������',
- '������'
- ],
+ viewOptions: ['������', '������'],
dateValue: [],
pickerOptions: {
- disabledDate(time) {
+ disabledDate (time) {
return time.getTime() > Date.now()
},
shortcuts: [
{
text: '������',
- onClick(picker) {
+ onClick (picker) {
picker.$emit('pick', new Date())
- },
+ }
},
{
text: '������',
- onClick(picker) {
+ onClick (picker) {
const date = new Date()
date.setTime(date.getTime() - 3600 * 1000 * 24)
picker.$emit('pick', date)
- },
+ }
},
{
text: '���������',
- onClick(picker) {
+ onClick (picker) {
const date = new Date()
date.setTime(date.getTime() - 3600 * 1000 * 24 * 7)
picker.$emit('pick', date)
- },
- },
- ],
+ }
+ }
+ ]
},
timeOne: '',
threeOptions: {
@@ -474,7 +650,7 @@
// ������������������������������������������������������������
if (maxDate) this.timeOne = ''
},
- disabledDate: (time) => {
+ disabledDate: time => {
if (this.timeOne) {
const WEEK = 3 * 24 * 3600 * 1000 - 1 // ������������3���������1��������� ������3���������
const minTime = this.timeOne // ������������
@@ -487,7 +663,30 @@
} else {
return time.getTime() > new Date()
}
+ }
+ },
+ timeOne: '',
+ threeOptions: {
+ onPick: ({ maxDate, minDate }) => {
+ // ������������ ������������
+ this.timeOne = minDate.getTime() // ��������������������� ������������������
+ // ������������������������������������������������������������
+ if (maxDate) this.timeOne = ''
},
+ disabledDate: time => {
+ if (this.timeOne) {
+ const WEEK = 3 * 24 * 3600 * 1000 - 1 // ������������3���������1��������� ������3���������
+ const minTime = this.timeOne // ������������
+ const maxTime = this.timeOne + WEEK // ������������
+ return (
+ time.getTime() < minTime ||
+ time.getTime() > maxTime ||
+ time.getTime() > new Date()
+ )
+ } else {
+ return time.getTime() > new Date()
+ }
+ }
},
sensorDate: null,
noneData: false,
@@ -503,7 +702,7 @@
tab3: '115',
tab4: '150',
tab5: '250',
- tab6: '350',
+ tab6: '350'
},
{
sensorName: 'PM10',
@@ -513,37 +712,37 @@
tab3: '250',
tab4: '350',
tab5: '420',
- tab6: '500',
+ tab6: '500'
},
{
sensorName: 'SO2',
unit: 'ug/m��',
- tab1: '50',
- tab2: '150',
- tab3: '475',
+ tab1: '150',
+ tab2: '500',
+ tab3: '650',
tab4: '800',
- tab5: '1600',
- tab6: '2100',
+ tab5: '',
+ tab6: ''
},
{
sensorName: 'NO2',
unit: 'ug/m��',
- tab1: '40',
- tab2: '80',
- tab3: '180',
- tab4: '280',
- tab5: '565',
- tab6: '750',
+ tab1: '100',
+ tab2: '200',
+ tab3: '700',
+ tab4: '1200',
+ tab5: '2340',
+ tab6: '3090'
},
{
sensorName: 'CO',
unit: 'mg/m��',
- tab1: '2',
- tab2: '4',
- tab3: '14',
- tab4: '24',
- tab5: '36',
- tab6: '48',
+ tab1: '5',
+ tab2: '10',
+ tab3: '35',
+ tab4: '60',
+ tab5: '90',
+ tab6: '120'
},
{
sensorName: 'O3',
@@ -553,7 +752,7 @@
tab3: '300',
tab4: '400',
tab5: '800',
- tab6: '1000',
+ tab6: '1000'
},
{
sensorName: 'TVOC',
@@ -563,7 +762,7 @@
tab3: '0.5',
tab4: '0.7',
tab5: '0.9',
- tab6: '1',
+ tab6: '1'
},
{
sensorName: '���������',
@@ -573,8 +772,8 @@
tab3: '1000',
tab4: '10000',
tab5: '20000',
- tab6: '50000',
- },
+ tab6: '50000'
+ }
],
carWs: null,
map: null,
@@ -594,12 +793,12 @@
dataTypeList: [
{
value: 'history',
- label: '������������',
+ label: '������������'
},
{
value: 'webSocket',
- label: '������������',
- },
+ label: '������������'
+ }
],
dataTypeValue: 'history',
historyView: true,
@@ -613,14 +812,18 @@
endTime: '',
dataDate: '',
sensorTime: [],
+ Lu: [],
+ startL: '',
+ Lname: '',
+ endL: '',
timeValue: [
new Date(2020, 1, 1, 0, 0, 0),
- new Date(2022, 12, 31, 23, 59, 59),
- ],
+ new Date(2022, 12, 31, 23, 59, 59)
+ ]
}
},
watch: {
- dataTypeValue(n, o) {
+ dataTypeValue (n, o) {
if (this.dataTypeValue === 'webSocket') {
this.dateValue = []
this.historyView = false
@@ -631,12 +834,12 @@
this.webSocketView = false
}
},
- dateValue(n, o) {
+ dateValue (n, o) {
if (n === null) {
this.dateValue = []
}
},
- viewKey(n, o) {
+ viewKey (n, o) {
// console.log(n)
},
deep: true,
@@ -661,7 +864,7 @@
// immediate: true
// }
},
- mounted() {
+ mounted () {
// this.$watch('carMac', () => {
if (this.dataType === 'history') {
this.getStart()
@@ -670,8 +873,8 @@
}
// })
},
- beforeDestroy() {},
- created() {
+ beforeDestroy () {},
+ created () {
this.newTime(this.timeValue)
this.newDate()
this.getCarData()
@@ -680,8 +883,111 @@
// })
},
methods: {
+ handleRemove (file, fileList) {
+ // console.log(file, fileList)
+ },
+ handleChange (file, fileList) {
+ var str = file.name // ���������4���
+ let a = str.substring(str.length - 3)
+ // console.log(a)
+ if (a === 'png') {
+ this.file = file.raw
+ console.log(this.file.raw)
+ this.fileList = fileList
+ } else {
+ this.$message('���������png���������������')
+ }
+ // console.log(file.name, 'file')
+ },
+ insLuDuan () {
+ // if (this.startL == '') {
+ // this.$message({
+ // message: '���������������������',
+ // type: 'warning',
+ // })
+ // return false
+ // } else if (this.endL == '') {
+ // this.$message({
+ // message: '���������������������',
+ // type: 'warning',
+ // })
+ // return false
+ // } else
+ if (this.Lname == '') {
+ this.$message({
+ message: '������������������',
+ type: 'warning'
+ })
+ return false
+ }
+ if (this.tableData.length === 0) {
+ this.$message({
+ message: '���������������',
+ type: 'warning'
+ })
+ // console.log(1);
+ return false
+ }
+ // console.log(this.tableData);
+ var times = this.newTime2(this.dateValue)
+ const formData = new FormData()
+ let pv = JSON.stringify(this.tableData)
+ // let big = {
+ // table: pv,
+ // road: this.Lname,
+ // time3: times[0],
+ // time4: times[1],
+ // mac: this.carMac,
+ // files: this.file,
+ // }
+ // console.log(big)
+
+ // console.log(pv);
+ // formData.append(`time1`, this.startL)
+ // formData.append(`time2`, this.endL)
+
+ formData.append(`table`, pv)
+ formData.append(`road`, this.Lname)
+ formData.append(`time3`, times[0])
+ formData.append(`time4`, times[1])
+ formData.append(`mac`, this.carMac)
+ this.fileList.map(v => {
+ formData.append(`files`, v.raw)
+ })
+ this.$request({
+ url: 'cruiser/getDailyDustld',
+ method: 'post',
+ headers: { 'Content-Type': 'multipart/form-data' }, // ���������������������������������
+ data: formData
+ }).then(res => {
+ console.log(res)
+ if (res.code === 0) {
+ this.$message({
+ message: '������������������',
+ type: 'success'
+ })
+ this.tableData = []
+ this.Lname = ''
+ }
+ })
+ },
+
+ // ������������
+ insertL () {
+ $('.insLu').show()
+ },
+ insqu () {
+ $('.insLu').hide()
+ this.qnull()
+ },
+ qnull () {
+ // this.startL = ''
+ // this.endL = ''
+ this.tableData = []
+ this.Lname = ''
+ },
// ������������������
- newTime2(timeArr) {
+ newTime2 (timeArr) {
var arr = []
timeArr.map(v => {
var date = new Date(v)
@@ -701,7 +1007,7 @@
return arr
},
// ���������������������
- deviceDetail(mac, item, items, indexs) {
+ deviceDetail (mac, item, items, indexs) {
// console.log('������������������������')
// console.log(mac)
// console.log(item)
@@ -716,42 +1022,44 @@
device: items,
macName: mac,
indexs: indexs,
- items: [items.latitude, items.longitude],
+ items: [items.latitude, items.longitude]
},
query: {
monitorPointInfo: JSON.stringify(item),
- device: items,
+ device: JSON.stringify(items),
macName: mac,
indexs: indexs,
items: [items.latitude, items.longitude],
- equipment: 'car',
- },
+ equipment: 'car'
+ }
})
},
// 6���������������
- customLevel() {
+ customLevel () {
this.getStart()
this.dialogFormVisible = false
},
// ���������������������������������
- changeCarData(e) {
+ changeCarData (e) {
this.carMac = e.mac
this.getStart()
},
// ���������������������������
- getCarData() {
+ getCarData () {
this.$request({
url: '/cruiser/selectCruisers',
method: 'get'
- }).then(res => {
- this.defaultData = res.data
- this.carMac = res.data[0].mac
- }).catch(err => {
- console.log(err)
})
+ .then(res => {
+ this.defaultData = res.data
+ this.carMac = res.data[0].mac
+ })
+ .catch(err => {
+ console.log(err)
+ })
},
// ������mac������������������������������
- getMacDate() {
+ getMacDate () {
this.isDataList = []
this.$request({
url: '/cruiser/getDates',
@@ -759,39 +1067,49 @@
params: {
mac: this.carMac
}
- }).then(res => {
- for (let i = 0; i < res.data.length; i++) {
- // this.isDataList[i].value = res.data.data[i]
- // this.isDataList[i].label = res.data.data[i]
- // this.isDataList[i] = { value: res.data.data[i], label: res.data.data[i] }
- this.isDataList.push({
- value: res.data[i],
- label: res.data[i]
- })
- }
- }).catch(err => {
- console.log(err)
})
+ .then(res => {
+ for (let i = 0; i < res.data.length; i++) {
+ // this.isDataList[i].value = res.data.data[i]
+ // this.isDataList[i].label = res.data.data[i]
+ // this.isDataList[i] = { value: res.data.data[i], label: res.data.data[i] }
+ this.isDataList.push({
+ value: res.data[i],
+ label: res.data[i]
+ })
+ }
+ })
+ .catch(err => {
+ console.log(err)
+ })
},
// ���������������������������������������
- Rad(d) {
+ Rad (d) {
return (d * Math.PI) / 180.0 // ���������������������������������������������������
},
// ���������������������������������������������������������������������������������������
- GetDistance(lat1, lng1, lat2, lng2) {
+ GetDistance (lat1, lng1, lat2, lng2) {
var radLat1 = this.Rad(lat1)
var radLat2 = this.Rad(lat2)
var a = radLat1 - radLat2
var b = this.Rad(lng1) - this.Rad(lng2)
- var s = 2 * Math.asin(Math.sqrt(Math.pow(Math.sin(a / 2), 2) +
- Math.cos(radLat1) * Math.cos(radLat2) * Math.pow(Math.sin(b / 2), 2)))
+ var s =
+ 2 *
+ Math.asin(
+ Math.sqrt(
+ Math.pow(Math.sin(a / 2), 2) +
+ Math.cos(radLat1) *
+ Math.cos(radLat2) *
+ Math.pow(Math.sin(b / 2), 2)
+ )
+ )
s = s * 6378.137 // EARTH_RADIUS;
s = Math.round(s * 10000) / 10000 // ���������������
// s=s.toFixed(4);
return s
},
// ���������������
- newDate() {
+ newDate () {
var aData = new Date()
var month =
aData.getMonth() < 9
@@ -801,11 +1119,11 @@
this.sensorDate = aData.getFullYear() + '-' + month + '-' + date
},
// ���������������
- newTime(timeArr) {
+ newTime (timeArr) {
let str = ''
let str2 = ''
this.sensorTime = []
- timeArr.map((v) => {
+ timeArr.map(v => {
v = JSON.stringify(v)
str2 = v.substr(12, 8).split(':')
str2[0] =
@@ -817,7 +1135,7 @@
})
},
// ������������
- dateChange(e) {
+ dateChange (e) {
if (e === null) {
this.sensorDate = []
} else {
@@ -851,7 +1169,7 @@
// this.isDisTime = false
// },
// ������������������������
- blurChange() {
+ blurChange () {
// ������������������
this.newTime(this.timeValue)
if (this.view) {
@@ -864,7 +1182,7 @@
this.getStart()
},
// ���������������������������
- wsStart() {
+ wsStart () {
if (this.ws) {
this.ws.close()
console.log('������ws')
@@ -896,7 +1214,12 @@
if (that.msgTemp.length < 2) {
that.msgTemp.push({ lat: lat, lon: lon })
}
- var distance = that.GetDistance(that.msgTemp[0].lat, that.msgTemp[0].lon, that.msgTemp[1].lat, that.msgTemp[1].lon)
+ var distance = that.GetDistance(
+ that.msgTemp[0].lat,
+ that.msgTemp[0].lon,
+ that.msgTemp[1].lat,
+ that.msgTemp[1].lon
+ )
if (distance >= 0.05) {
that.msgTemp.shift()
that.msgTemp.push({ lat: lat, lon: lon })
@@ -907,7 +1230,7 @@
}
},
// ���������������������
- getStart() {
+ getStart () {
this.noneData = false
if (this.ws) {
this.ws.close()
@@ -918,14 +1241,18 @@
}
this.$request({
- url: '/cruiser/cruiserTrajectory',
+ // url: '/cruiser/cruiserTrajectory',
+ url: '/cruiser/carTrajectoryNewAvg',
method: 'get',
params: {
mac: this.carMac,
time1: this.sensorDate[0],
- time2: this.sensorDate[1]
+ time2: this.sensorDate[1],
+ type: this.sensorKey,
+ range: this.inputnum
}
}).then(res => {
+ // console.log(res)
if (!res.data.length) {
this.noneData = true
this.loading = false
@@ -937,7 +1264,8 @@
})
},
// ������������������������
- initStart(res) {
+ initStart (res) {
+ // console.log(res.data, 'res.data')
this.abc += 1
const that = this
if (!res) {
@@ -956,14 +1284,20 @@
if (this.responseJSON.length > 0) {
this.noneData = false
$.each(this.responseJSON, (item, value) => {
+ // console.log(value, 'value')
if (typeof value.flylon === 'undefined') {
showNoPoints()
} else {
+ // console.log(value.flylon.toString().length, 'value.flylon.length')
var lng = parseFloat(
- value.flylon.substr(0, value.flylon.length - 1)
+ value.flylon
+ .toString()
+ .substr(0, value.flylon.toString().length - 1)
)
var lat = parseFloat(
- value.flylat.substr(0, value.flylat.length - 1)
+ value.flylat
+ .toString()
+ .substr(0, value.flylat.toString().length - 1)
)
if (lng < 70 || lng > 150 || lat > 60 || lat < 20) {
return true
@@ -978,20 +1312,31 @@
timeArrSub[i] = v.split(' ')[0]
if (i === 1) timeArrSub[2] = v.split(' ')[1]
})
- if (that.carMac === 'p5dnd7a0243626' && timeArrSub[0] === '2022-12-11' && (timeArrSub[1] === '2022-12-11' || timeArrSub[1] === '2022-12-12' && timeArrSub[2] === '00:00:00')) {
+ if (
+ that.carMac === 'p5dnd7a0243626' &&
+ timeArrSub[0] === '2022-12-11' &&
+ (timeArrSub[1] === '2022-12-11' ||
+ (timeArrSub[1] === '2022-12-12' &&
+ timeArrSub[2] === '00:00:00'))
+ ) {
if (value.a34004) point.a34004 = parseInt(value.a34004 * 2.7)
if (value.a34002) point.a34002 = parseInt(value.a34002 * 2.2)
if (value.a21026) point.a21026 = parseInt(value.a21026 - 0 + 5)
if (value.a21004) point.a21004 = parseInt(value.a21004 - 20)
// point.a21004 = parseInt(value.a21004)
- if (value.a21005) point.a21005 = parseFloat(value.a21005 - 0 + 0.85).toFixed(3)
+ if (value.a21005) { point.a21005 = parseFloat(value.a21005 - 0 + 0.85).toFixed(3) }
if (value.a05024 < 15) {
point.a05024 = parseInt(value.a05024 + 3)
} else if (value.a05024 > 18) {
point.a05024 = parseInt(value.a05024 - 3)
} else point.a05024 = parseInt(value.a05024)
point.a99054 = parseFloat(value.a99054).toFixed(3)
- if (value.dustld - 0 !== 0 && value.dustld - 0 < 100 && (that.carMac === 'p5dnd7a0243622' || that.carMac === 'p5dnd7a0243625')) {
+ if (
+ value.dustld - 0 !== 0 &&
+ value.dustld - 0 < 100 &&
+ (that.carMac === 'p5dnd7a0243622' ||
+ that.carMac === 'p5dnd7a0243625')
+ ) {
point.dustld = 100
} else {
point.dustld = value.dustld - 0
@@ -1004,25 +1349,22 @@
point.a21005 = parseFloat(value.a21005).toFixed(3)
point.a05024 = parseInt(value.a05024)
point.a99054 = parseFloat(value.a99054).toFixed(3)
- if (value.dustld - 0 !== 0 && value.dustld - 0 < 100 && (that.carMac === 'p5dnd7a0243622' || that.carMac === 'p5dnd7a0243625')) {
- point.dustld = 100
+ if (value.dustld - 0 >= 0 && value.dustld - 0 < 40) {
+ point.dustld = value.dustld - 0 // + 170
+ } else if (value.dustld - 0 >= 40 && value.dustld - 0 < 60) {
+ point.dustld = value.dustld - 0 // + 130
+ } else if (value.dustld - 0 >= 60 && value.dustld - 0 < 100) {
+ point.dustld = value.dustld - 0 // + 110
+ } else if (value.dustld - 0 >= 100 && value.dustld - 0 < 150) {
+ point.dustld = value.dustld - 0 // + 70
+ } else if (value.dustld - 0 >= 150 && value.dustld - 0 < 180) {
+ point.dustld = value.dustld - 0 // + 30
} else {
point.dustld = value.dustld - 0
}
}
- // point.a34004 = parseInt(value.a34004)
- // point.a34002 = parseInt(value.a34002)
- // point.a21026 = parseInt(value.a21026)
- // point.a21004 = parseInt(value.a21004)
- // point.a21005 = parseFloat(value.a21005).toFixed(3)
- // point.a05024 = parseInt(value.a05024)
- // point.a99054 = parseFloat(value.a99054).toFixed(3)
- // if (value.dustld - 0 !== 0 && value.dustld - 0 < 100 && (that.carMac === 'p5dnd7a0243622' || that.carMac === 'p5dnd7a0243625')) {
- // point.dustld = 100
- // } else {
- // point.dustld = value.dustld - 0
- // }
// point.dustld = value.dustld - 0
+ point.times = value.time
trackPoints.push(point)
}
})
@@ -1045,7 +1387,7 @@
// ������������������
skyColors: ['rgba(186, 0, 255, 0)', 'rgba(186, 0, 255, 0.2)'], // ������������
building: false, // ������������������
- poiText: true, // ������poi������
+ poiText: true // ������poi������
})
that.map.addControl(new BMapGL.NavigationControl3D()) // ������3d������
if (this.responseJSON.length === 0) {
@@ -1058,7 +1400,7 @@
if (that.firstPlayFlag) {
that.map.centerAndZoom(that.centerPoint, that.mapZoom)
that.view = new mapvgl.View({
- map: that.map,
+ map: that.map
})
that.firstPlayFlag = false
} else {
@@ -1071,8 +1413,8 @@
draw(that.sensor, that.viewType, that.carMac)
// drawLine()// ������
drawStartAndEnd() // ���������������������
- function draw(sensor, type, carMac) {
- var levels = getGrading(sensor, type, carMac)
+ function draw (sensor, type, carMac, point) {
+ var levels = getGrading(sensor, type, carMac, point)
$.each(levels, function (index, value) {
var color = value.color
var data = value.data
@@ -1085,9 +1427,7 @@
selectedColor: '#ee1111', // ���������������
autoSelect: true, // ������������������������������������������
riseTime: 1800, // ���������������������������
- onClick: (e) => {
- // console.log(e)
- },
+ onClick: e => {}
})
that.shapeLayer.setData(data)
that.view.addLayer(that.shapeLayer)
@@ -1102,7 +1442,7 @@
}
// ���������������������������������
- function drawPolygon(sensor) {
+ function drawPolygon (sensor) {
$.each(that.showPoints, function (item, point) {
var sw = getPoint(225, point.lng, point.lat, that.distance)
var ne = getPoint(45, point.lng, point.lat, that.distance)
@@ -1114,7 +1454,7 @@
new BMapGL.Point(sw.lng, sw.lat), // ���������
new BMapGL.Point(ne.lng, sw.lat), // ���������
new BMapGL.Point(ne.lng, ne.lat), // ���������
- new BMapGL.Point(sw.lng, ne.lat), // ���������
+ new BMapGL.Point(sw.lng, ne.lat) // ���������
],
{ strokeWeight: 0.5, strokeOpacity: 0.0, fillColor: color }
)
@@ -1125,14 +1465,14 @@
}
// ���������������������
- function drawStartAndEnd() {
+ function drawStartAndEnd () {
var startIcon = new BMapGL.Icon(
require('@/assets/images/start.png'),
new BMapGL.Size(48, 48)
)
var startMark = new BMapGL.Marker(that.showPoints[0], {
icon: startIcon,
- offset: new BMapGL.Size(0, -20),
+ offset: new BMapGL.Size(0, -20)
})
that.map.addOverlay(startMark)
var endIcon = new BMapGL.Icon(
@@ -1143,14 +1483,14 @@
that.showPoints[that.showPoints.length - 1],
{
icon: endIcon,
- offset: new BMapGL.Size(0, -20),
+ offset: new BMapGL.Size(0, -20)
}
)
that.map.addOverlay(endMark)
}
// ���������������������
- function drawLine() {
+ function drawLine () {
var data = []
var points = []
$.each(trackPoints, function (index, value) {
@@ -1161,8 +1501,8 @@
data.push({
geometry: {
type: '"LineString"',
- coordinates: [points],
- },
+ coordinates: [points]
+ }
})
var lineLayer = new mapvgl.LineLayer({
color: 'red',
@@ -1170,36 +1510,39 @@
animation: true,
duration: 10, // ������������2s
trailLength: 0.1, // ������������������������0.4
- interval: 0.3, // ���������������������������������0.2
+ interval: 0.3 // ���������������������������������0.2
})
that.view.addLayer(lineLayer)
lineLayer.setData(data)
}
// ������������>=size���������points
- function getShowPoints(size) {
+ function getShowPoints (size) {
var points = []
points.push(trackPoints[0])
for (var i = 1; i < trackPoints.length; i++) {
- var flag = true
+ // var flag = true
var point1 = trackPoints[i]
- for (var j = 0; j < points.length; j++) {
- var point2 = points[j]
- var dis = that.map.getDistance(point1, point2) // ������������������������������������������������
- if (dis < size) {
- flag = false
- }
- }
- if (flag) {
- points.push(point1)
- }
+ // for (var j = 0; j < points.length; j++) {
+ // var point2 = points[j]
+ // var dis = that.map.getDistance(point1, point2) // ������������������������������������������������
+ // if (dis < size) {
+ // flag = false
+ // }
+ // }
+ // points.push(point1)
+ // console.log(points,'num');
+ // if (flag) {
+ points.push(point1)
+ // console.log(points, 'num')
+ // }
}
return points
}
// ���������������������������������������
- function getPoint(angle, lng, lat, distance) {
+ function getPoint (angle, lng, lat, distance) {
var EARTH_RADIUS = 6378137
// ���������������������������������������
var ra = distance / EARTH_RADIUS
@@ -1220,11 +1563,11 @@
// ���������������10���������������
lng = (lng * 180) / Math.PI
lat = (lat * 180) / Math.PI
- // console.log(lng, lat)
+ // console.log(lng, lat,123)
return new BMapGL.Point(lng, lat)
}
- function getGrading(sensor, type, carMac) {
+ function getGrading (sensor, type, carMac) {
var levels = []
var level0 = {}
var level1 = {}
@@ -1287,77 +1630,77 @@
data0.push({
geometry: {
type: 'Polygon',
- coordinates: [polygon],
+ coordinates: [polygon]
},
properties: {
- height: height,
- },
+ height: height
+ }
})
break
case 1:
data1.push({
geometry: {
type: 'Polygon',
- coordinates: [polygon],
+ coordinates: [polygon]
},
properties: {
- height: height,
- },
+ height: height
+ }
})
break
case 2:
data2.push({
geometry: {
type: 'Polygon',
- coordinates: [polygon],
+ coordinates: [polygon]
},
properties: {
- height: height,
- },
+ height: height
+ }
})
break
case 3:
data3.push({
geometry: {
type: 'Polygon',
- coordinates: [polygon],
+ coordinates: [polygon]
},
properties: {
- height: height,
- },
+ height: height
+ }
})
break
case 4:
data4.push({
geometry: {
type: 'Polygon',
- coordinates: [polygon],
+ coordinates: [polygon]
},
properties: {
- height: height,
- },
+ height: height
+ }
})
break
case 5:
data5.push({
geometry: {
type: 'Polygon',
- coordinates: [polygon],
+ coordinates: [polygon]
},
properties: {
- height: height,
- },
+ height: height
+ }
})
break
case 6:
data6.push({
geometry: {
type: 'Polygon',
- coordinates: [polygon],
+ coordinates: [polygon]
},
properties: {
- height: height,
- },
+ height: height
+ }
})
break
}
@@ -1372,7 +1715,7 @@
levels.push(level0, level1, level2, level3, level4, level5, level6)
return levels
}
- function getColorAndLevel(senosor, data) {
+ function getColorAndLevel (senosor, data) {
var levelData = that.sensorTableData
var colorAndLevel = {}
var color
@@ -1553,33 +1896,80 @@
}
// point���������label������
- function setLabelStyle(content, point) {
- var label = new BMapGL.Label("<span class='my-maptip'>" + content + '<br /><span>', // ���lable������������
- {
- offset: new BMapGL.Size(-8, -10), // label������������������������label������������������������
- position: point
- }
- )// label���������
+ function setLabelStyle (content, point) {
+ var label = new BMapGL.Label(
+ `<span class="my-maptip" data-times="${point.times}">${content}<span>`, // ���lable������������
+ {
+ offset: new BMapGL.Size(-8, -10), // label������������������������label������������������������
+ position: point
+ }
+ )
+ // label���������
var offsetSize = new BMapGL.Size(0, 0)
var size = '10px'
if (that.map.getZoom() <= 15.5) {
size = '0px'
}
var labelStyle = {
+ display: 'block',
+ width: '20px',
border: '0',
fontSize: size,
height: '20px',
lineHeight: '20px',
fontFamily: '������������',
backgroundColor: '0.05',
- fontWeight: 'bold',
+ fontWeight: 'bold'
}
+ label.addEventListener('click', e => {
+ // console.log(e)
+ // var ps = e.target.latLng.lat
+ // var ps1 = e.target.latLng.lng
+ // var p1 = new BMap.Point(ps1, ps);
+ // var marker = new BMap.Marker(p1);;
+ // that.map.addOverlay(marker);
+ var times = e.target.domElement.children[0].getAttribute('data-times')
+ // console.log(times)
+ if (that.startL == '') {
+ that.startL = times
+ // that.Lu.startLu.push(that.startL)
+ // console.log(that.Lu.startLu, 'start')
+ } else {
+ // that.tableData=[]
+ that.endL = times
+ comparedate(that.startL, that.endL)
+ // var endLu = []
+ // that.Lu.endLu.push(that.endL)
+ // console.log(that.Lu.endLu, 'end')
+ // that.startL = ''
+ // that.endL = ''
+ // that.tableData.push(that.Lu)
+ // console.log(that.tableData, 'table')
+ }
+ })
label.setStyle(labelStyle)
that.map.addOverlay(label)
}
+ // ���������������������������
+ function comparedate (date1, date2) {
+ let oDate1 = new Date(date1)
+ let oDate2 = new Date(date2)
+ if (oDate1.getTime() > oDate2.getTime()) {
+ that.startL = ''
+ that.endL = ''
+ that.$message('���������������������������������������������������')
+ return false
+ } else if (oDate1.getTime() < oDate2.getTime()) {
+ var cardNumObj = { start: that.startL, end: that.endL }
+ that.tableData.push(cardNumObj)
+ console.log(that.tableData, 'that.tableData')
+ that.startL = ''
+ that.endL = ''
+ }
+ }
// ������������,������������������
- function showNoPoints() {
+ function showNoPoints () {
that.map.centerAndZoom('���������', 17)
setTimeout(function () {
document.getElementById('cpm').style.display = 'block'
@@ -1588,6 +1978,7 @@
}
// ������������������������
+
that.map.addEventListener('zoomend', function () {
// ���������������������������������������
var zoom = that.map.getZoom()
@@ -1598,7 +1989,7 @@
})
// var that = this
- function clickChange() {
+ function clickChange () {
$('.carTop').on('click', () => {
// console.log('���������')
that.view.removeAllLayers()
@@ -1627,7 +2018,7 @@
clickChange()
}
},
- changeCode(index) {
+ changeCode (index) {
this.changeColor = index
// var pr = ''
switch (index) {
@@ -1664,9 +2055,12 @@
// this.bg = require('@/assets/images/tl_TVOCNew.png')
break
}
- this.initStart(this.carData)
+ this.$nextTick(() => {
+ this.getStart()
+ })
+ this.initStart()
},
- changeCode1(index) {
+ changeCode1 (index) {
this.changeColor1 = index
if (index === 0) {
this.viewKey = '2D'
@@ -1674,8 +2068,8 @@
this.viewKey = '3D'
}
this.getStart()
- },
- },
+ }
+ }
}
</script>
<style lang="less" scoped>
@@ -1688,7 +2082,7 @@
margin: 0;
z-index: 0;
font-size: 14px;
- font-family: "������������";
+ font-family: '������������';
}
.main_body {
@@ -1711,7 +2105,7 @@
margin-top: -50px;
z-index: 11;
color: #000000;
- border: 2px solid #FF7F50;
+ border: 2px solid #ff7f50;
font-size: 28px;
line-height: 100px;
text-align: center;
@@ -1804,8 +2198,8 @@
border-right: 1px solid #aaa;
}
-.carTop{
- &>.left:nth-child(1){
+.carTop {
+ & > .left:nth-child(1) {
border-radius: 5px 0 0 5px;
}
}
@@ -1846,4 +2240,34 @@
.main_body /deep/ .el-date-editor .el-range-separator {
width: 15%;
}
+
+/deep/ .BMapLabel .my-maptip {
+ display: block !important;
+ width: inherit;
+ height: inherit;
+ text-align: center;
+ vertical-align: middle;
+}
+.insLu {
+ border: 1px solid white;
+ background-color: white;
+ width: 20rem;
+ height: 30rem;
+ position: absolute;
+ top: 3rem;
+ left: 1rem;
+ z-index: 99;
+ display: none;
+ padding: 0.5rem;
+}
+.statspan {
+ font-size: 0.5rem;
+ margin-top: 2rem;
+}
+.insLu div {
+ margin-top: 0.8rem;
+}
+/deep/.inputNum {
+ width: 5% !important;
+}
</style>
--
Gitblit v1.8.0