From 8b29471e308be57255389b08bbc90ab33ea04584 Mon Sep 17 00:00:00 2001 From: quanyawei <401863037@qq.com> Date: Thu, 04 Jul 2024 14:22:41 +0800 Subject: [PATCH] fix: 道路尘负荷排名 --- src/views/car/index.vue | 985 +++++++++++++++++++++++++++++++-------------------------- 1 files changed, 542 insertions(+), 443 deletions(-) diff --git a/src/views/car/index.vue b/src/views/car/index.vue index a106d1f..8319877 100644 --- a/src/views/car/index.vue +++ b/src/views/car/index.vue @@ -2,7 +2,7 @@ <div class="main_body"> <el-container style="height: 100%"> <el-aside - v-if="this.$store.state.aside" + v-if="$store.state.aside" width="300px" style="background-color: rgb(238, 241, 246); padding-top: 10px" > @@ -13,8 +13,7 @@ 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" @@ -40,207 +39,243 @@ 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 - v-for="(item, index) in snesorParams" - :key="index" - class="left" - :class="{ click: changeColor == index }" - @click="changeCode(index)" + <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'" - class="right" - :class="{ click: changeColor1 == index }" - @click="changeCode1(index)" + </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 - > - </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>--> + </span> - <el-button - type="primary" - size="small" - style="margin-left: 1.5rem" - @click="insertL" - >������</el-button - > - <div class="insLu"> - <el-upload - class="upload-demo" - ref="upload" - action="" - :on-change="handleChange" - :on-remove="handleRemove" - :file-list="fileList" - :auto-upload="false" - :limit="1" + <span + v-if="webSocketView" + style="margin: 2px 10px 0 0" > - <el-button slot="trigger" size="small" type="primary" - >������������</el-button + <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" > - <div slot="tip" class="el-upload__tip" style="color: red"> - ������������������������(���������������) + <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> - </el-upload> - <!-- <div style="display: flex"> - <span class="statspan">������������������:</span - ><el-input v-model="startL" style="width: 12rem"></el-input> + <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> - <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" - ></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> - </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> - <!-- ������/��������������������� --> - <el-select - v-model="dataTypeValue" - placeholder="������������" - style=" - float: right; + <el-date-picker + v-model="dateValue" + size="mini" + style=" margin-right: 10px" + type="datetimerange" + range-separator="���" + start-placeholder="������������" + end-placeholder="������������" + @change="dateChange" + /> + <!-- ������/��������������������� --> + <el-select + v-model="dataTypeValue" + size="mini" + placeholder="������������" + style=" + line-height: 40px; margin-right: 10px; width: 103px; " + > + <el-option + v-for="item in dataTypeList" + :key="item.value" + :label="item.label" + :value="item.value" + /> + </el-select> + </div> + <div + v-if="!rankListShow & noneDustldData" + class="rightIcon" + @click="showRankList" > - <el-option - v-for="item in dataTypeList" - :key="item.value" - :label="item.label" - :value="item.value" - /> - </el-select> + <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.value }} + </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> --> @@ -256,44 +291,81 @@ > ��������������� </div> - <el-table :data="sensorTableData" border> - <el-table-column prop="sensorName" label="������" /> - <el-table-column prop="unit" label="������" /> + <el-table + :data="sensorTableData" + border + > + <el-table-column + prop="sensorName" + label="������" + /> + <el-table-column + 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> @@ -482,12 +554,13 @@ 2.0) / 3.0 return ret - }, + } } export default { components: { index }, - data() { + data () { return { + inputnum: 50, tableData: [], fileList: [], file: '', @@ -503,7 +576,7 @@ 'CO', 'O3', 'TVOC', - '���������', + '���������' ], changeColor: 0, changeColor1: 0, @@ -515,33 +588,33 @@ 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: { @@ -551,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 // ������������ @@ -564,7 +637,7 @@ } else { return time.getTime() > new Date() } - }, + } }, timeOne: '', threeOptions: { @@ -574,7 +647,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 // ������������ @@ -587,11 +660,13 @@ } else { return time.getTime() > new Date() } - }, + } }, sensorDate: null, noneData: false, + noneDustldData: false, defaultData: [], + rankList: [], carMac: null, dialogFormVisible: false, sensorTableData: [ @@ -603,7 +678,7 @@ tab3: '115', tab4: '150', tab5: '250', - tab6: '350', + tab6: '350' }, { sensorName: 'PM10', @@ -613,47 +688,47 @@ 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', unit: 'ug/m��', - tab1: '100', - tab2: '160', - tab3: '215', - tab4: '265', + tab1: '160', + tab2: '200', + tab3: '300', + tab4: '400', tab5: '800', - tab6: '800', + tab6: '1000' }, { sensorName: 'TVOC', @@ -663,7 +738,7 @@ tab3: '0.5', tab4: '0.7', tab5: '0.9', - tab6: '1', + tab6: '1' }, { sensorName: '���������', @@ -673,8 +748,8 @@ tab3: '1000', tab4: '10000', tab5: '20000', - tab6: '50000', - }, + tab6: '50000' + } ], carWs: null, map: null, @@ -694,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, @@ -719,12 +795,12 @@ 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 @@ -735,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 - // } + immediate: true }, - mounted() { + mounted () { // this.$watch('carMac', () => { if (this.dataType === 'history') { this.getStart() @@ -774,21 +831,18 @@ } // }) }, - beforeDestroy() {}, - created() { + beforeDestroy () {}, + created () { this.newTime(this.timeValue) this.newDate() this.getCarData() - // this.$watch('carMac', () => { - // this.getMacDate() - // }) }, methods: { - handleRemove(file, fileList) { + handleRemove (file, fileList) { // console.log(file, fileList) }, - handleChange(file, fileList) { - var str = file.name //���������4��� + handleChange (file, fileList) { + var str = file.name // ���������4��� let a = str.substring(str.length - 3) // console.log(a) if (a === 'png') { @@ -800,31 +854,18 @@ } // 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 == '') { + insLuDuan () { + if (this.Lname === '') { this.$message({ message: '������������������', - type: 'warning', + type: 'warning' }) return false } if (this.tableData.length === 0) { this.$message({ message: '���������������', - type: 'warning', + type: 'warning' }) // console.log(1); return false @@ -833,39 +874,25 @@ 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) => { + 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) => { + data: formData + }).then(res => { console.log(res) if (res.code === 0) { this.$message({ message: '������������������', - type: 'success', + type: 'success' }) this.tableData = [] this.Lname = '' @@ -873,24 +900,24 @@ }) }, - //������������ - insertL() { + // ������������ + insertL () { $('.insLu').show() }, - insqu() { + insqu () { $('.insLu').hide() this.qnull() }, - qnull() { + qnull () { // this.startL = '' // this.endL = '' this.tableData = [] this.Lname = '' }, // ������������������ - newTime2(timeArr) { + newTime2 (timeArr) { var arr = [] - timeArr.map((v) => { + timeArr.map(v => { var date = new Date(v) var y = date.getFullYear() var m = date.getMonth() + 1 @@ -908,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', @@ -923,73 +944,73 @@ 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', + method: 'get' }) - .then((res) => { + .then(res => { this.defaultData = res.data this.carMac = res.data[0].mac }) - .catch((err) => { + .catch(err => { console.log(err) }) }, // ������mac������������������������������ - getMacDate() { + getMacDate () { this.isDataList = [] this.$request({ url: '/cruiser/getDates', method: 'get', params: { - mac: this.carMac, - }, + mac: this.carMac + } }) - .then((res) => { + .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], + label: res.data[i] }) } }) - .catch((err) => { + .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 @@ -1010,7 +1031,7 @@ return s }, // ��������������� - newDate() { + newDate () { var aData = new Date() var month = aData.getMonth() < 9 @@ -1020,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] = @@ -1036,7 +1057,7 @@ }) }, // ������������ - dateChange(e) { + dateChange (e) { if (e === null) { this.sensorDate = [] } else { @@ -1051,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) { @@ -1083,7 +1086,7 @@ this.getStart() }, // ��������������������������� - wsStart() { + wsStart () { if (this.ws) { this.ws.close() console.log('������ws') @@ -1130,8 +1133,11 @@ } } }, + showRankList () { + this.rankListShow = !this.rankListShow + }, // ��������������������� - getStart() { + getStart () { this.noneData = false if (this.ws) { this.ws.close() @@ -1142,15 +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], - }, - }).then((res) => { - console.log(res) + type: this.sensorKey, + range: this.inputnum + } + }).then(res => { + // console.log(res) if (!res.data.length) { this.noneData = true this.loading = false @@ -1158,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) { @@ -1181,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 @@ -1215,8 +1252,7 @@ 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) { @@ -1241,13 +1277,16 @@ 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 } @@ -1276,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) { @@ -1289,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 { @@ -1302,7 +1341,7 @@ draw(that.sensor, that.viewType, that.carMac) // drawLine()// ������ drawStartAndEnd() // ��������������������� - function draw(sensor, type, carMac, point) { + function draw (sensor, type, carMac, point) { var levels = getGrading(sensor, type, carMac, point) $.each(levels, function (index, value) { var color = value.color @@ -1316,7 +1355,7 @@ selectedColor: '#ee1111', // ��������������� autoSelect: true, // ������������������������������������������ riseTime: 1800, // ��������������������������� - onClick: (e) => {}, + onClick: e => {} }) that.shapeLayer.setData(data) that.view.addLayer(that.shapeLayer) @@ -1331,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) @@ -1343,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 } ) @@ -1354,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( @@ -1372,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) { @@ -1390,8 +1429,8 @@ data.push({ geometry: { type: '"LineString"', - coordinates: [points], - }, + coordinates: [points] + } }) var lineLayer = new mapvgl.LineLayer({ color: 'red', @@ -1399,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 @@ -1453,7 +1495,7 @@ return new BMapGL.Point(lng, lat) } - function getGrading(sensor, type, carMac) { + function getGrading (sensor, type, carMac) { var levels = [] var level0 = {} var level1 = {} @@ -1516,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 } @@ -1601,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 @@ -1782,12 +1824,12 @@ } // point���������label������ - function setLabelStyle(content, point) { + 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, + position: point } ) // label��������� @@ -1805,9 +1847,9 @@ lineHeight: '20px', fontFamily: '������������', backgroundColor: '0.05', - fontWeight: 'bold', + fontWeight: 'bold' } - label.addEventListener('click', (e) => { + label.addEventListener('click', e => { // console.log(e) // var ps = e.target.latLng.lat // var ps1 = e.target.latLng.lng @@ -1836,8 +1878,8 @@ label.setStyle(labelStyle) that.map.addOverlay(label) } - //��������������������������� - function comparedate(date1, date2) { + // ��������������������������� + function comparedate (date1, date2) { let oDate1 = new Date(date1) let oDate2 = new Date(date2) if (oDate1.getTime() > oDate2.getTime()) { @@ -1855,7 +1897,7 @@ } // ������������,������������������ - function showNoPoints() { + function showNoPoints () { that.map.centerAndZoom('���������', 17) setTimeout(function () { document.getElementById('cpm').style.display = 'block' @@ -1875,7 +1917,7 @@ }) // var that = this - function clickChange() { + function clickChange () { $('.carTop').on('click', () => { // console.log('���������') that.view.removeAllLayers() @@ -1904,7 +1946,7 @@ clickChange() } }, - changeCode(index) { + changeCode (index) { this.changeColor = index // var pr = '' switch (index) { @@ -1941,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' @@ -1951,8 +1996,8 @@ this.viewKey = '3D' } this.getStart() - }, - }, + } + } } </script> <style lang="less" scoped> @@ -2050,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; } @@ -2150,5 +2198,56 @@ .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> - \ No newline at end of file -- Gitblit v1.8.0