From 43bd29ccb06c689327edd88cf32be659c9abc0a5 Mon Sep 17 00:00:00 2001
From: quanyawei <401863037@qq.com>
Date: Fri, 06 Sep 2024 11:15:25 +0800
Subject: [PATCH] fix: 责任单位修改
---
src/views/car/index.vue | 1126 ++++++++++++++++++++++++++++++++++++++++-------------------
1 files changed, 765 insertions(+), 361 deletions(-)
diff --git a/src/views/car/index.vue b/src/views/car/index.vue
index fe3e768..5740830 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
@@ -38,188 +39,333 @@
class="iconfont iconfaxianzuobiao"
@click="deviceDetail(item.mac, null, item, 0)"
/>
- <!-- @click="deviceDetail('p5dnd7a0245390',null,item,0)"-->
</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">
- <el-button
- size="medium"
- type="primary"
- icon="el-icon-setting"
- @click="dialogFormVisible = true"
- >6���������</el-button
- >
- </span>
- <span
-
+ <div class="faterCar">
+ <div class="carTop">
+ <span
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'"
+ >{{ item }}
+ </span>
+ <span style="margin-left: 10px">
+ <el-button
+ size="mini"
+ type="primary"
+ icon="el-icon-setting"
+ @click="dialogFormVisible = true"
+ >6���������</el-button>
+ </span>
+ <span
+ 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
+ >{{ item }}
+ </span>
+
+ <span
+ v-if="webSocketView"
+ style="margin: 2px 10px 0 0"
>
- </span>
- <!-- <el-date-picker
- v-if="historyView"
- v-model="dateValue"
- value-format="yyyy-MM-dd"
- style="float:right;margin-right: 10px;line-height: 40px;"
- align="right"
- type="date"
- placeholder="������������"
- :picker-options="pickerOptions"
- @change="dateChange"
- />-->
- <!-- ��������������� -->
- <!-- <el-time-picker-->
- <!-- :disabled="isDisTime"-->
- <!-- style="float:right;width: 210px"-->
- <!-- is-range-->
- <!-- v-model="timeValue"-->
- <!-- @blur="blurChange"-->
- <!-- range-separator="���"-->
- <!-- start-placeholder="������������"-->
- <!-- end-placeholder="������������"-->
- <!-- placeholder="������������������">-->
- <!-- </el-time-picker>-->
- <!-- ��������������������������� -->
- <!-- <el-select v-if="historyView" v-model="dateValue" placeholder="������������" style="float:right;line-height:40px;margin-right:10px;width:140px" @change="dateChange">-->
- <!-- <el-option-->
- <!-- v-for="item in isDataList"-->
- <!-- :key="item.value"-->
- <!-- :label="item.label"-->
- <!-- :value="item.value"-->
- <!-- @click.native="dataChangeClick"-->
- <!-- />-->
- <!-- </el-select>-->
- <el-date-picker
- style="float:right;margin-right:10px;"
- @change="dateChange"
+ <el-button
+ size="mini"
+ type="primary"
+ @click="wsStart()"
+ >������������</el-button>
+ </span>
+
+ <el-button
+ size="mini"
+ type="primary"
+ @click="insertL"
+ >
+ ������
+ </el-button>
+ <el-input
+ v-model="inputnum"
+ size="mini"
+ 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>
+ <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
v-model="dateValue"
+ size="mini"
+ style=" margin-right: 10px"
type="datetimerange"
- :picker-options="threeOptions"
range-separator="���"
start-placeholder="������������"
- end-placeholder="������������">
- </el-date-picker>
- <!-- ������/��������������������� -->
- <el-select
- v-model="dataTypeValue"
- placeholder="������������"
- style="
- float: right;
+ end-placeholder="������������"
+ @change="dateChange"
+ />
+ <!-- ������/��������������������� -->
+ <el-select
+ v-model="dataTypeValue"
+ size="mini"
+ placeholder="������������"
+ style="
+
line-height: 40px;
margin-right: 10px;
width: 103px;
"
- >
- <el-option
+ >
+ <el-option
v-for="item in dataTypeList"
:key="item.value"
:label="item.label"
:value="item.value"
- />
- </el-select>
+ />
+ </el-select>
+ </div>
+ <div
+ v-if="!rankListShow & noneDustldData"
+ class="rightIcon"
+ @click="showRankList"
+ >
+ <i class="el-icon-s-fold" />
+ </div>
+ <div v-if="rankListShow">
+ <!-- -->
+ <div
+ style="position: relative"
+ class="rankCar"
+ >
+ <div
+ class="success-checkmark"
+ @click="showRankList"
+ />
+ <div>
+ <p>������������</p>
+ <ul>
+ <li
+ v-for="(item, index) in rankList"
+ :key="index"
+ >
+ <div class="rankCarItem">
+ <div> {{ index+1 }}. {{ item.road }}</div>
+ <div style="margin-left: 10px">
+ {{ item.avg }}
+ </div>
+ </div>
+ </li>
+ </ul>
+ </div>
+ </div>
+ </div>
</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>
- <!-- <div id="selectSenor">
- <span><input type="radio" value="a34004" name="sensor" checked>PM2.5</span>
- <span><input type="radio" value="a34002" name="sensor">PM10</span>
- <span><input type="radio" value="a99054" name="sensor">TVOC</span>
- </div>
- <div id="type">
- <input type="radio" value="2D" name="v" checked>2D
- <input type="radio" value="3D" name="v">3D
- </div> -->
- <!-- <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 +374,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 +554,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 +576,7 @@
'CO',
'O3',
'TVOC',
- '���������',
+ '���������'
],
changeColor: 0,
changeColor1: 0,
@@ -432,39 +585,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 +624,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,11 +637,36 @@
} 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,
+ noneDustldData: false,
defaultData: [],
+ rankList: [],
carMac: null,
dialogFormVisible: false,
sensorTableData: [
@@ -503,7 +678,7 @@
tab3: '115',
tab4: '150',
tab5: '250',
- tab6: '350',
+ tab6: '350'
},
{
sensorName: 'PM10',
@@ -513,37 +688,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 +728,7 @@
tab3: '300',
tab4: '400',
tab5: '800',
- tab6: '1000',
+ tab6: '1000'
},
{
sensorName: 'TVOC',
@@ -563,7 +738,7 @@
tab3: '0.5',
tab4: '0.7',
tab5: '0.9',
- tab6: '1',
+ tab6: '1'
},
{
sensorName: '���������',
@@ -573,8 +748,8 @@
tab3: '1000',
tab4: '10000',
tab5: '20000',
- tab6: '50000',
- },
+ tab6: '50000'
+ }
],
carWs: null,
map: null,
@@ -594,16 +769,17 @@
dataTypeList: [
{
value: 'history',
- label: '������������',
+ label: '������������'
},
{
value: 'webSocket',
- label: '������������',
- },
+ label: '������������'
+ }
],
dataTypeValue: 'history',
historyView: true,
webSocketView: false,
+ rankListShow: false,
isDataList: [],
shapeLayer: null,
carData: null,
@@ -613,14 +789,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,37 +811,18 @@
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,
immediate: true
- // timeValue: {
- // handler(newVal, oldVal) {
- // this.sensorTime = this.newTime()
- // console.log(this.sensorTime, 'this.sensorTime')
- // // if (this.dataValue && this.timeValue) {
- // // if (this.view) {
- // // this.view.removeAllLayers()
- // // this.map.clearOverlays()
- // // // console.log('������������')
- // // }
- // // this.dataType = 'history'
- // // this.sensorDate = this.dateValue
- // // // this.map = null
- // // this.getStart()
- // // }
- // },
- // deep: true,
- // immediate: true
- // }
},
- mounted() {
+ mounted () {
// this.$watch('carMac', () => {
if (this.dataType === 'history') {
this.getStart()
@@ -670,18 +831,91 @@
}
// })
},
- beforeDestroy() {},
- created() {
+ beforeDestroy () {},
+ created () {
this.newTime(this.timeValue)
this.newDate()
this.getCarData()
- // this.$watch('carMac', () => {
- // this.getMacDate()
- // })
},
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.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)
+ 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,13 +935,7 @@
return arr
},
// ���������������������
- deviceDetail(mac, item, items, indexs) {
- // console.log('������������������������')
- // console.log(mac)
- // console.log(item)
- // console.log(items)
- // console.log(indexs)
- // this.monitorPointInfo = item
+ deviceDetail (mac, item, items, indexs) {
this.$router.push({
name: 'deviceDetail',
// path: '/carDetail',
@@ -716,42 +944,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 +989,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 +1041,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 +1057,7 @@
})
},
// ������������
- dateChange(e) {
+ dateChange (e) {
if (e === null) {
this.sensorDate = []
} else {
@@ -832,26 +1072,8 @@
this.getStart()
}
},
- // ������������������������
- // dataChangeClick(e) {
- // if (!this.isDisTime) {
- // // ������������������
- // if (this.dateValue.length <= 1) {
- // this.newTime(this.timeValue)
- // }
- // if (this.view) {
- // this.view.removeAllLayers()
- // this.map.clearOverlays()
- // // console.log('������������')
- // }
- // this.dataType = 'history'
- // // this.map = null
- // this.getStart()
- // }
- // this.isDisTime = false
- // },
// ������������������������
- blurChange() {
+ blurChange () {
// ������������������
this.newTime(this.timeValue)
if (this.view) {
@@ -864,7 +1086,7 @@
this.getStart()
},
// ���������������������������
- wsStart() {
+ wsStart () {
if (this.ws) {
this.ws.close()
console.log('������ws')
@@ -896,7 +1118,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 })
@@ -906,8 +1133,11 @@
}
}
},
+ showRankList () {
+ this.rankListShow = !this.rankListShow
+ },
// ���������������������
- getStart() {
+ getStart () {
this.noneData = false
if (this.ws) {
this.ws.close()
@@ -918,14 +1148,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
@@ -933,11 +1167,33 @@
if (res.data.length) {
this.carData = res
this.initStart(this.carData)
+ if (this.sensorKey === 'dustld') {
+ this.getRanking()
+ }
+ }
+ })
+ },
+ getRanking () {
+ this.$request({
+ // url: '/cruiser/cruiserTrajectory',
+ url: '/cruiser/sort',
+ method: 'get',
+ params: {
+ mac: this.carMac,
+ startTime: this.sensorDate[0],
+ endTime: this.sensorDate[1]
+ }
+ }).then(res => {
+ if (res.data.length > 0) {
+ this.noneDustldData = true
+ this.rankList = res.data
+ console.log('������', res)
}
})
},
// ������������������������
- initStart(res) {
+ initStart (res) {
+ // console.log(res.data, 'res.data')
this.abc += 1
const that = this
if (!res) {
@@ -956,14 +1212,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 +1240,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 +1277,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 +1315,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 +1328,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 +1341,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 +1355,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 +1370,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 +1382,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 +1393,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 +1411,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 +1429,8 @@
data.push({
geometry: {
type: '"LineString"',
- coordinates: [points],
- },
+ coordinates: [points]
+ }
})
var lineLayer = new mapvgl.LineLayer({
color: 'red',
@@ -1170,36 +1438,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 +1491,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 +1558,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 +1643,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 +1824,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 +1906,7 @@
}
// ������������������������
+
that.map.addEventListener('zoomend', function () {
// ���������������������������������������
var zoom = that.map.getZoom()
@@ -1598,7 +1917,7 @@
})
// var that = this
- function clickChange() {
+ function clickChange () {
$('.carTop').on('click', () => {
// console.log('���������')
that.view.removeAllLayers()
@@ -1627,7 +1946,7 @@
clickChange()
}
},
- changeCode(index) {
+ changeCode (index) {
this.changeColor = index
// var pr = ''
switch (index) {
@@ -1664,9 +1983,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 +1996,8 @@
this.viewKey = '3D'
}
this.getStart()
- },
- },
+ }
+ }
}
</script>
<style lang="less" scoped>
@@ -1688,7 +2010,7 @@
margin: 0;
z-index: 0;
font-size: 14px;
- font-family: "������������";
+ font-family: '������������';
}
.main_body {
@@ -1711,7 +2033,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;
@@ -1773,12 +2095,15 @@
width: 100px;
height: 200px;
}
-.carTop {
+.faterCar{
position: absolute;
+ width: 100%;
+ z-index: 999;
top: 0;
+}
+.carTop {
width: 100%;
padding: 5px 10px;
- z-index: 999;
background: rgba(204, 204, 204, 0.5);
box-shadow: 1px 1px 5px #666;
}
@@ -1804,8 +2129,8 @@
border-right: 1px solid #aaa;
}
-.carTop{
- &>.left:nth-child(1){
+.carTop {
+ & > .left:nth-child(1) {
border-radius: 5px 0 0 5px;
}
}
@@ -1846,4 +2171,83 @@
.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;
+}
+.rightIcon{
+ position: absolute;
+ right: 0px;
+ top: 300px;
+ z-index: 999;
+ cursor: pointer;
+ font-size: 30px;
+ color: #409eff;
+}
+.rankCar{
+ float: right;
+ p{
+ text-align: center;
+ }
+ background: rgba(204, 204, 204, 0.5);
+ box-shadow: 1px 1px 5px #666;
+ padding: 5px;
+ margin-top: 10px;
+ ul{
+ font-size: 16px;
+ list-style: none;
+ max-height: 800px;
+ padding-bottom: 120px;
+ overflow: auto;
+ padding-left: 0;
+ li{
+ margin: 10px;
+ }
+ }
+}
+.success-checkmark:after {
+ content: '��';
+ position: absolute;
+ left:0; top: -1px;
+ width: 20px;
+ height: 20px;
+ text-align: center;
+ border: 1px solid #aaa;
+ background: #f8f8f8;
+ border-radius: 50%;
+ box-shadow: inset 0 1px 3px rgba(0,0,0,.3);
+ cursor: pointer;
+}
+.rankCarItem{
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ margin: 10px 0;
+}
</style>
--
Gitblit v1.8.0