|
|
@ -51,8 +51,11 @@ |
|
|
|
</div> |
|
|
|
|
|
|
|
<div class="container panel"> |
|
|
|
<div class="toolbar day-toolbar"> |
|
|
|
|
|
|
|
<div class="toolbar day-toolbar" v-if="currentElement === 'singleWatervapor' || currentElement === 'aod-icot-wcot' |
|
|
|
|| currentElement === 'extinctionOptics' || currentElement === 'backscatter' |
|
|
|
|| currentElement === 'pm2_5' || currentElement === 'pblh' |
|
|
|
|| currentElement === 'cloudSol' || currentElement === 'cloudbaseheight' |
|
|
|
|| currentElement === 'cloudtopheight'"> |
|
|
|
<div class="times"> |
|
|
|
<div class="time-item" v-for="(time, index) in times" :key="index" |
|
|
|
:class="{'active': currentTime === time.date, 'first-hour': time.hour === '00'}"> |
|
|
@ -60,7 +63,6 @@ |
|
|
|
<span class="time" @click="onTimeClick(time, index)">{{ time.hour }}</span> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
|
|
|
|
<el-date-picker v-model="date" type="date" placeholder="请选择" :clearable="false" :editable="false" |
|
|
|
class="date-picker" @change="onChange"> |
|
|
|
</el-date-picker> |
|
|
@ -70,8 +72,28 @@ |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
|
|
|
|
<div class="picture-view"> |
|
|
|
|
|
|
|
<div class="toolbar day-toolbar" v-if="currentElement === 'extinction' || currentElement=== 'lidarratio' || currentElement === 'watervapor'"> |
|
|
|
<div class="times"> |
|
|
|
<div class="time-item" v-for="(time, index) in times" :key="index" |
|
|
|
:class="{'active': currentTime === time.date, 'first-hour': time.day === '01'}"> |
|
|
|
<span class="hour" style="padding-left: 10px">{{ time.month }}</span> |
|
|
|
<span class="time" @click="onDayClick(time, index)">{{ time.day }}</span> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
|
|
|
|
<el-date-picker v-model="date" type="date" placeholder="请选择" :clearable="false" :editable="false" |
|
|
|
class="date-picker" @change="onChange"> |
|
|
|
</el-date-picker> |
|
|
|
<div class="control-btn"> |
|
|
|
<span @click="onPrevDayTimeClick"><img src="/images/prev.png"/></span> |
|
|
|
<span @click="onNextDayTimeClick"><img src="/images/next.png"/></span> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="picture-view"> |
|
|
|
<div class="picture-container raman-picture-container" v-show="currentElement === 'singleWatervapor'"> |
|
|
|
<div class="picture special-picture"> |
|
|
|
<div v-loading="loadingWaterVaporSingleStatus" |
|
|
@ -86,7 +108,7 @@ |
|
|
|
<div class="picture-container raman-picture-container" v-show=" currentElement=== 'aod-icot-wcot'"> |
|
|
|
<div class="picture"> |
|
|
|
<div id="opticalThickness" |
|
|
|
style="width: 1000px;height: 450px" |
|
|
|
style="width: 1000px;height: 450px;margin-top: 66px" |
|
|
|
v-loading="loadingOpticalThicknessStatus" |
|
|
|
custom-class="loading" |
|
|
|
element-loading-text="加载中"> |
|
|
@ -139,7 +161,7 @@ |
|
|
|
<div class="picture-container raman-picture-container" v-show="currentElement=== 'pblh'"> |
|
|
|
<div class="picture"> |
|
|
|
<div id="BoundaryLayerHeight" |
|
|
|
style="width: 1000px;height: 450px" |
|
|
|
style="width: 1000px;height: 450px;margin-top: 66px" |
|
|
|
v-loading="loadingBoundaryLayerHeightStatus" |
|
|
|
custom-class="loading" |
|
|
|
element-loading-text="加载中"></div> |
|
|
@ -149,7 +171,7 @@ |
|
|
|
<div class="picture-container raman-picture-container" v-show="currentElement=== 'lidarratio'"> |
|
|
|
<div class="picture"> |
|
|
|
<div id="LidarRatio" |
|
|
|
style="width: 1000px;height: 450px" |
|
|
|
style="width: 1000px;height: 450px;margin-top: 66px" |
|
|
|
v-loading="loadingLidarRatioStatus" |
|
|
|
custom-class="loading" |
|
|
|
element-loading-text="加载中"> |
|
|
@ -172,7 +194,7 @@ |
|
|
|
<div class="picture-container raman-picture-container" v-show="currentElement=== 'cloudbaseheight'"> |
|
|
|
<div class="picture special-picture"> |
|
|
|
<div id="cloudsHeight" |
|
|
|
style="width: 1000px;height: 450px" |
|
|
|
style="width: 1000px;height: 450px;margin-top: 66px" |
|
|
|
v-loading="loadingCloudsHeightStatus" |
|
|
|
custom-class="loading" |
|
|
|
element-loading-text="加载中"></div> |
|
|
@ -182,7 +204,7 @@ |
|
|
|
<div class="picture-container raman-picture-container" v-show="currentElement=== 'cloudtopheight'"> |
|
|
|
<div class="picture special-picture"> |
|
|
|
<div id="cloudTopHeight" |
|
|
|
style="width: 1000px;height: 450px" |
|
|
|
style="width: 1000px;height: 450px;margin-top: 66px" |
|
|
|
v-loading="loadingCloudTopHeightStatus" |
|
|
|
custom-class="loading" |
|
|
|
element-loading-text="加载中"></div> |
|
|
@ -191,39 +213,54 @@ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="picture-container raman-picture-container" v-show="currentElement === 'layertype'"> |
|
|
|
<!-- <div class="picture-container raman-picture-container" v-show="currentElement === 'layertype'">--> |
|
|
|
<!-- <div class="picture special-picture">--> |
|
|
|
<!--<!– <h2 class="title">云的识别</h2>–>--> |
|
|
|
<!-- <div v-loading="loadingCloudRecognitionStatus"--> |
|
|
|
<!-- style="width: 100%;"--> |
|
|
|
<!-- custom-class="loading"--> |
|
|
|
<!-- element-loading-text="加载中">--> |
|
|
|
<!-- <canvas id='cloud_recognition_chart'></canvas>--> |
|
|
|
<!-- </div>--> |
|
|
|
<!-- </div>--> |
|
|
|
<!-- </div>--> |
|
|
|
|
|
|
|
<div class="picture-container raman-picture-container" v-show="currentElement === 'extinction'"> |
|
|
|
<div class="picture special-picture"> |
|
|
|
<!-- <h2 class="title">云的识别</h2>--> |
|
|
|
<div v-loading="loadingCloudRecognitionStatus" |
|
|
|
<div v-loading="loadingExtinctionStatus" |
|
|
|
style="width: 100%;" |
|
|
|
custom-class="loading" |
|
|
|
element-loading-text="加载中"> |
|
|
|
<canvas id='cloud_recognition_chart'></canvas> |
|
|
|
<canvas id='extinction_chart-before'></canvas> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
|
|
|
|
<div class="picture-container raman-picture-container" v-show="currentElement === 'extinction'"> |
|
|
|
<div class="picture special-picture"> |
|
|
|
<!-- <h2 class="title">消光系数</h2>--> |
|
|
|
<div v-loading="loadingExtinctionStatus" |
|
|
|
style="width: 100%;" |
|
|
|
custom-class="loading" |
|
|
|
element-loading-text="加载中"> |
|
|
|
<canvas id='extinction_chart'></canvas> |
|
|
|
<canvas id='extinction_chart-after'></canvas> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
|
|
|
|
<div class="picture-container raman-picture-container" v-show="currentElement === 'watervapor'"> |
|
|
|
<div class="picture special-picture"> |
|
|
|
<!-- <h2 class="title" style="left: 2.4rem;">水汽</h2>--> |
|
|
|
<div v-loading="loadingWaterVaporStatus" |
|
|
|
style="width: 100%" |
|
|
|
element-loading-text="加载中"> |
|
|
|
<canvas id='watervapor_chart'></canvas> |
|
|
|
<canvas id='watervapor_chart-before'></canvas> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
<div class="picture special-picture"> |
|
|
|
<div v-loading="loadingWaterVaporStatus" |
|
|
|
style="width: 100%" |
|
|
|
element-loading-text="加载中"> |
|
|
|
<canvas id='watervapor_chart-after'></canvas> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
|
|
|
|
|
|
|
|
</div> |
|
|
|
</div> |
|
|
|
</div> |
|
|
@ -332,11 +369,13 @@ export default { |
|
|
|
value: 'watervapor', |
|
|
|
label: '水汽' |
|
|
|
}], |
|
|
|
currentElement: 'layertype' |
|
|
|
currentElement: 'layertype', |
|
|
|
timeLineFormat: 'hour' |
|
|
|
}) |
|
|
|
|
|
|
|
onMounted(() => { |
|
|
|
initTimeLine(); |
|
|
|
// initTimeLine(); |
|
|
|
initTimeLineDay(); |
|
|
|
// setTitle(moment(options.date, 'YYYY-MM-DD')); |
|
|
|
setTimeout(() => { |
|
|
|
initEcharts(options.currentTab) |
|
|
@ -352,7 +391,7 @@ export default { |
|
|
|
creates.boundaryLayerHeight.setYAxis('边界层高度(m)'); |
|
|
|
creates.boundaryLayerHeight.setLegend(); |
|
|
|
creates.boundaryLayerHeight.setTooltip('高度: {point.y}'); |
|
|
|
creates.boundaryLayerHeight.setSeries('边界层高度') |
|
|
|
creates.boundaryLayerHeight.setSeries('边界层高度',0, null, null, '#3636FF') |
|
|
|
creates.boundaryLayerHeight.init(); |
|
|
|
} |
|
|
|
|
|
|
@ -389,7 +428,7 @@ export default { |
|
|
|
creates.LidarRatio.setYAxis('高度(m)'); |
|
|
|
creates.LidarRatio.setLegend(); |
|
|
|
creates.LidarRatio.setTooltip('高度: {point.y}'); |
|
|
|
creates.LidarRatio.setSeries('激光雷达比') |
|
|
|
creates.LidarRatio.setSeries('激光雷达比', 0, null, null, '#3636FF') |
|
|
|
creates.LidarRatio.init(); |
|
|
|
} |
|
|
|
|
|
|
@ -410,11 +449,21 @@ export default { |
|
|
|
} |
|
|
|
|
|
|
|
const onTabClick = (name) => { |
|
|
|
changeTimeLineFormat(name); |
|
|
|
options.currentTab = name; |
|
|
|
initEcharts(name) |
|
|
|
reloadChangeData() |
|
|
|
} |
|
|
|
|
|
|
|
const changeTimeLineFormat = (name) => { |
|
|
|
if (name === 'MWR'){ |
|
|
|
initTimeLineDay(); |
|
|
|
return; |
|
|
|
} |
|
|
|
|
|
|
|
initTimeLine(); |
|
|
|
} |
|
|
|
|
|
|
|
const reloadChangeData = () => { |
|
|
|
cancelRequest(); |
|
|
|
onMenuChange() |
|
|
@ -478,12 +527,8 @@ export default { |
|
|
|
label: '云顶高度' |
|
|
|
}] |
|
|
|
} else if (options.currentTab === 'MWR') { |
|
|
|
options.currentElement = 'layertype' |
|
|
|
options.currentElement = 'extinction' |
|
|
|
options.elementData = [ |
|
|
|
{ |
|
|
|
value: 'layertype', |
|
|
|
label: '云的识别' |
|
|
|
}, |
|
|
|
{ |
|
|
|
value: 'extinction', |
|
|
|
label: '消光系数' |
|
|
@ -498,46 +543,60 @@ export default { |
|
|
|
const elementChange = (code: string) => { |
|
|
|
switch (code) { |
|
|
|
case 'singleWatervapor' : |
|
|
|
// initTimeLine() |
|
|
|
reloadCloudRecognition('singleWatervapor', 101, 'watervapor', drawSingleWatervapor); |
|
|
|
break; |
|
|
|
case 'aod-icot-wcot' : |
|
|
|
// initTimeLine() |
|
|
|
reloadChartsRecognition('aod', drawAerosolCharts); |
|
|
|
reloadChartsRecognition('icot', drawIceCloudsCharts); |
|
|
|
reloadChartsRecognition('wcot', drawWaterCloud); |
|
|
|
break; |
|
|
|
case 'extinctionOptics' : |
|
|
|
// initTimeLine() |
|
|
|
reloadCloudRecognition('extinctionOptics', 801, 'extinction', drawOpticsExtinction); |
|
|
|
break; |
|
|
|
case 'backscatter' : |
|
|
|
// initTimeLine() |
|
|
|
reloadCloudRecognition('backscatter', 801, 'backscatter', drawBackscatter); |
|
|
|
break; |
|
|
|
case 'pm2_5' : |
|
|
|
// initTimeLine() |
|
|
|
reloadCloudRecognition('pm2_5', 201, 'pm2_5', drawPm2Point5); |
|
|
|
reloadCloudRecognition('pm2_5', 201, 'pm10', drawPm10); |
|
|
|
break; |
|
|
|
case 'pblh' : |
|
|
|
initTimeLine() |
|
|
|
reloadChartsRecognition('pblh', drawBoundaryLayerCharts); |
|
|
|
break; |
|
|
|
case 'lidarratio' : |
|
|
|
initTimeLineDay() |
|
|
|
reloadChartLidarratio('lidarratio', drawLidarRatioCharts); |
|
|
|
break; |
|
|
|
case 'cloudSol' : |
|
|
|
initTimeLine() |
|
|
|
reloadCloudRecognition('cloudSol', 801, 'layertype', drawCloudSol); |
|
|
|
break; |
|
|
|
case 'cloudbaseheight' : |
|
|
|
// initTimeLine() |
|
|
|
reloadChartsRecognition('cloudbaseheight', drawCloudsHeightCharts); |
|
|
|
break; |
|
|
|
case 'cloudtopheight' : |
|
|
|
// initTimeLine() |
|
|
|
reloadChartsRecognition('cloudtopheight', drawCloudTopHeightCharts); |
|
|
|
break; |
|
|
|
case 'layertype' : |
|
|
|
reloadCloudRecognition('layertype', 801, 'layertype', drawCloudRecognition); |
|
|
|
break; |
|
|
|
// case 'layertype' : |
|
|
|
// reloadCloudRecognition('layertype', 801, 'layertype', drawCloudRecognition); |
|
|
|
// break; |
|
|
|
case 'extinction' : |
|
|
|
reloadCloudRecognition('extinction', 801, 'extinction', drawExtinction); |
|
|
|
// initTimeLineDay() |
|
|
|
reloadCloudRecognition('extinction', 801, 'extinction', drawExtinctionBefore); |
|
|
|
reloadCloudRecognition('extinction', 801, 'extinction', drawExtinctionAfter); |
|
|
|
break; |
|
|
|
case 'watervapor' : |
|
|
|
reloadCloudRecognition('watervapor', 101, 'watervapor', drawWatervapor); |
|
|
|
// initTimeLineDay() |
|
|
|
reloadCloudRecognition('watervapor', 101, 'watervapor', drawWatervaporBefore); |
|
|
|
reloadCloudRecognition('watervapor', 101, 'watervapor', drawWatervaporAfter); |
|
|
|
break; |
|
|
|
default: |
|
|
|
throw new Error("无效的type类型"); |
|
|
@ -630,14 +689,14 @@ export default { |
|
|
|
} |
|
|
|
|
|
|
|
const drawBackscatter = (result: CustomeArray<any>) => { |
|
|
|
if (result.length != 12) return; |
|
|
|
if (result.length != 24) return; |
|
|
|
options.loadingBackscatterStatus = false; |
|
|
|
if (creates.backscatterDrawer != null) { |
|
|
|
creates.backscatterDrawer.close(); |
|
|
|
} |
|
|
|
|
|
|
|
let matrix = converCloudRecognition(801, result, 'backscatter'); |
|
|
|
creates.backscatterDrawer = new HeatMapDrawer(1200, 600, matrix, "backscatter_chart",'/km/sr'); |
|
|
|
creates.backscatterDrawer = new HeatMapDrawer(1200, 650, matrix, "backscatter_chart",'/km/sr'); |
|
|
|
creates.backscatterDrawer.setAxis(new CoordinateScale(options.timeArray), new CoordinateScale([0, 2000, 4000, 6000, 8000, 10000, 12000], true, true)); |
|
|
|
creates.backscatterDrawer.setColorChart(prepareBackscatterColors()); |
|
|
|
creates.backscatterDrawer.draw(); |
|
|
@ -654,20 +713,20 @@ export default { |
|
|
|
} |
|
|
|
|
|
|
|
const drawPm2Point5 = (result: CustomeArray<any>) => { |
|
|
|
if (result.length != 12) return; |
|
|
|
if (result.length != 24) return; |
|
|
|
options.loadingPmStatus = false; |
|
|
|
if (creates.pm2Point5Drawer != null) { |
|
|
|
creates.pm2Point5Drawer.close(); |
|
|
|
} |
|
|
|
let matrix = converCloudRecognition(201, result, 'pm2_5'); |
|
|
|
creates.pm2Point5Drawer = new HeatMapDrawer(800, 600, matrix, "pm2_5_chart",'μg/m³', 'PM2.5'); |
|
|
|
creates.pm2Point5Drawer = new HeatMapDrawer(800, 650, matrix, "pm2_5_chart",'μg/m³', 'PM2.5'); |
|
|
|
creates.pm2Point5Drawer.setAxis(new CoordinateScale(options.timeArray), new CoordinateScale([0, 1000, 2000, 3000], true, true)); |
|
|
|
creates.pm2Point5Drawer.setColorChart(preparePmColors()); |
|
|
|
creates.pm2Point5Drawer.draw(); |
|
|
|
} |
|
|
|
|
|
|
|
const drawPm10 = (result: CustomeArray<any>) => { |
|
|
|
if (result.length != 12) return; |
|
|
|
if (result.length != 24) return; |
|
|
|
|
|
|
|
options.loadingPmStatus = false; |
|
|
|
if (creates.pm10Drawer != null) { |
|
|
@ -675,7 +734,7 @@ export default { |
|
|
|
} |
|
|
|
|
|
|
|
let matrix = converCloudRecognition(201, result, 'pm10'); |
|
|
|
creates.pm10Drawer = new HeatMapDrawer(800, 600, matrix, "pm10_chart", 'μg/m³', 'PM10'); |
|
|
|
creates.pm10Drawer = new HeatMapDrawer(800, 650, matrix, "pm10_chart", 'μg/m³', 'PM10'); |
|
|
|
creates.pm10Drawer.setAxis(new CoordinateScale(options.timeArray), new CoordinateScale([0, 1000, 2000, 3000], true, true)); |
|
|
|
creates.pm10Drawer.setColorChart(preparePmColors()); |
|
|
|
creates.pm10Drawer.draw(); |
|
|
@ -736,7 +795,6 @@ export default { |
|
|
|
options.chartTimeData = []; |
|
|
|
result.sort((x, y) => moment(x.time, 'M_D_H').isBefore(moment(y.time, 'M_D_H')) ? -1 : 1); |
|
|
|
result.forEach(item => { |
|
|
|
// options.chartTimeData.push(item.time) |
|
|
|
if (item.data == null) { |
|
|
|
let temp = []; |
|
|
|
for (let i = 0; i < 11; i++) { |
|
|
@ -776,7 +834,7 @@ export default { |
|
|
|
} |
|
|
|
|
|
|
|
const drawCloudSol = (result: CustomeArray<any>) => { |
|
|
|
if (result.length != 12) return; |
|
|
|
if (result.length != 24) return; |
|
|
|
|
|
|
|
options.loadingCloudSolStatus = false; |
|
|
|
if (creates.cloudSolDrawer != null) { |
|
|
@ -784,14 +842,14 @@ export default { |
|
|
|
} |
|
|
|
|
|
|
|
let matrix = converCloudRecognition(801, result, 'cloudSol'); |
|
|
|
creates.cloudSolDrawer = new HeatMapDrawer(1200, 600, matrix, "cloud_sol_chart"); |
|
|
|
creates.cloudSolDrawer = new HeatMapDrawer(1200, 650, matrix, "cloud_sol_chart"); |
|
|
|
creates.cloudSolDrawer.setAxis(new CoordinateScale(options.timeArray), new CoordinateScale([0, 2000, 4000, 6000, 8000, 10000, 12000], true, true)); |
|
|
|
creates.cloudSolDrawer.setColorChart(prepareCloudRecognitionColors()); |
|
|
|
creates.cloudSolDrawer.draw(); |
|
|
|
} |
|
|
|
|
|
|
|
const drawOpticsExtinction = (result: CustomeArray<any>) => { |
|
|
|
if (result.length != 12) return; |
|
|
|
if (result.length != 24) return; |
|
|
|
|
|
|
|
options.loadingExtinctionOpticsStatus = false; |
|
|
|
if (creates.opticsExtinctionDrawer != null) { |
|
|
@ -799,7 +857,7 @@ export default { |
|
|
|
} |
|
|
|
|
|
|
|
let matrix = converCloudRecognition(801, result, 'extinctionOptics'); |
|
|
|
creates.opticsExtinctionDrawer = new HeatMapDrawer(1200, 600, matrix, "extinction_optics_chart",'/km/sr'); |
|
|
|
creates.opticsExtinctionDrawer = new HeatMapDrawer(1200, 650, matrix, "extinction_optics_chart",'/km/sr'); |
|
|
|
creates.opticsExtinctionDrawer.setAxis(new CoordinateScale(options.timeArray), new CoordinateScale([0, 2000, 4000, 6000, 8000, 10000, 12000], true, true)); |
|
|
|
creates.opticsExtinctionDrawer.setColorChart(prepareExtinctionnColors()); |
|
|
|
creates.opticsExtinctionDrawer.draw(); |
|
|
@ -807,7 +865,7 @@ export default { |
|
|
|
} |
|
|
|
|
|
|
|
const drawSingleWatervapor = (result: CustomeArray<any>) => { |
|
|
|
if (result.length != 12) return; |
|
|
|
if (result.length != 24) return; |
|
|
|
|
|
|
|
options.loadingWaterVaporSingleStatus = false; |
|
|
|
if (creates.singleWatervaporDrawer != null) { |
|
|
@ -815,14 +873,29 @@ export default { |
|
|
|
} |
|
|
|
|
|
|
|
let matrix = converCloudRecognition(101, result, 'singleWatervapor'); |
|
|
|
creates.singleWatervaporDrawer = new HeatMapDrawer(1200, 600, matrix, "watervapor_single_chart",' g/kg'); |
|
|
|
creates.singleWatervaporDrawer = new HeatMapDrawer(1200, 650, matrix, "watervapor_single_chart",' g/kg'); |
|
|
|
creates.singleWatervaporDrawer.setAxis(new CoordinateScale(options.timeArray), new CoordinateScale([0, 500, 1000, 1500], true, true)); |
|
|
|
creates.singleWatervaporDrawer.setColorChart(prepareWatervaporColors()); |
|
|
|
creates.singleWatervaporDrawer.draw(); |
|
|
|
} |
|
|
|
|
|
|
|
const drawWatervapor = (result: CustomeArray<any>) => { |
|
|
|
if (result.length != 12) return; |
|
|
|
const drawWatervaporBefore = (result: CustomeArray<any>) => { |
|
|
|
if (result.length != 24) return; |
|
|
|
|
|
|
|
options.loadingWaterVaporStatus = false; |
|
|
|
if (creates.watervaporDrawer != null) { |
|
|
|
creates.watervaporDrawer.close(); |
|
|
|
} |
|
|
|
|
|
|
|
let matrix = converCloudRecognition(101, result, 'watervapor'); |
|
|
|
creates.watervaporDrawer = new HeatMapDrawer(800, 650, matrix, "watervapor_chart-before",'g/kg', '质控前'); |
|
|
|
creates.watervaporDrawer.setAxis(new CoordinateScale(options.timeArray), new CoordinateScale([0, 500, 1000, 1500], true, true)); |
|
|
|
creates.watervaporDrawer.setColorChart(prepareWatervaporColors()); |
|
|
|
creates.watervaporDrawer.draw(); |
|
|
|
} |
|
|
|
|
|
|
|
const drawWatervaporAfter = (result: CustomeArray<any>) => { |
|
|
|
if (result.length != 24) return; |
|
|
|
|
|
|
|
options.loadingWaterVaporStatus = false; |
|
|
|
if (creates.watervaporDrawer != null) { |
|
|
@ -830,12 +903,15 @@ export default { |
|
|
|
} |
|
|
|
|
|
|
|
let matrix = converCloudRecognition(101, result, 'watervapor'); |
|
|
|
creates.watervaporDrawer = new HeatMapDrawer(1200, 600, matrix, "watervapor_chart",'g/kg'); |
|
|
|
creates.watervaporDrawer = new HeatMapDrawer(800, 650, matrix, "watervapor_chart-after",'g/kg', '质控后'); |
|
|
|
creates.watervaporDrawer.setAxis(new CoordinateScale(options.timeArray), new CoordinateScale([0, 500, 1000, 1500], true, true)); |
|
|
|
creates.watervaporDrawer.setColorChart(prepareWatervaporColors()); |
|
|
|
creates.watervaporDrawer.draw(); |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
const prepareWatervaporColors = () => { |
|
|
|
return new ColorChart(['#990000', '#CC0000', '#FF0000', '#FF3300', '#FF6600', '#FF9900', '#FFCC00', '#FFFF00', '#CCFF33', '#99FF66', |
|
|
|
'#66FF99', '#33FFCC', '#00FFFF', '#00CCFF', '#0099FF', '#0066FF', '#0033FF', '#0000FF', '#0000CC', '#000099'], |
|
|
@ -843,8 +919,8 @@ export default { |
|
|
|
); |
|
|
|
} |
|
|
|
|
|
|
|
const drawExtinction = (result: CustomeArray<any>) => { |
|
|
|
if (result.length != 12) return; |
|
|
|
const drawExtinctionBefore = (result: CustomeArray<any>) => { |
|
|
|
if (result.length != 24) return; |
|
|
|
|
|
|
|
options.loadingExtinctionStatus = false; |
|
|
|
if (creates.extinctionDrawer != null) { |
|
|
@ -852,7 +928,22 @@ export default { |
|
|
|
} |
|
|
|
|
|
|
|
let matrix = converCloudRecognition(801, result, 'extinction'); |
|
|
|
creates.extinctionDrawer = new HeatMapDrawer(1200, 600, matrix, "extinction_chart", 'km/sr'); |
|
|
|
creates.extinctionDrawer = new HeatMapDrawer(800, 650, matrix, "extinction_chart-before", 'km/sr','质控前'); |
|
|
|
creates.extinctionDrawer.setAxis(new CoordinateScale(options.timeArray), new CoordinateScale([0, 2000, 4000, 6000, 8000, 10000, 12000], true, true)); |
|
|
|
creates.extinctionDrawer.setColorChart(prepareExtinctionnColors()); |
|
|
|
creates.extinctionDrawer.draw(); |
|
|
|
} |
|
|
|
|
|
|
|
const drawExtinctionAfter = (result: CustomeArray<any>) => { |
|
|
|
if (result.length != 24) return; |
|
|
|
|
|
|
|
options.loadingExtinctionStatus = false; |
|
|
|
if (creates.extinctionDrawer != null) { |
|
|
|
creates.extinctionDrawer.close(); |
|
|
|
} |
|
|
|
|
|
|
|
let matrix = converCloudRecognition(801, result, 'extinction'); |
|
|
|
creates.extinctionDrawer = new HeatMapDrawer(800, 650, matrix, "extinction_chart-after", 'km/sr','质控后'); |
|
|
|
creates.extinctionDrawer.setAxis(new CoordinateScale(options.timeArray), new CoordinateScale([0, 2000, 4000, 6000, 8000, 10000, 12000], true, true)); |
|
|
|
creates.extinctionDrawer.setColorChart(prepareExtinctionnColors()); |
|
|
|
creates.extinctionDrawer.draw(); |
|
|
@ -872,9 +963,9 @@ export default { |
|
|
|
let result = new CustomeArray(callback); |
|
|
|
let time = moment(options.date); |
|
|
|
options.timeArray = [] |
|
|
|
for (let index = 0; index < 12; index++) { |
|
|
|
for (let index = 0; index < 24; index++) { |
|
|
|
reloadSingleCloudRecognition(capacity, time.clone().add(-index, 'h').format('M_D_H'), element, result); |
|
|
|
options.timeArray.push(time.clone().add(-index, 'h').format('HH时')) |
|
|
|
options.timeArray.push(time.clone().add(-index, 'h').format('HH')) |
|
|
|
} |
|
|
|
options.timeArray.reverse() |
|
|
|
} |
|
|
@ -1154,6 +1245,8 @@ export default { |
|
|
|
|
|
|
|
//初始化时间轴 |
|
|
|
const initTimeLine = () => { |
|
|
|
if (options.timeLineFormat == "hour") return; |
|
|
|
options.timeLineFormat = "hour"; |
|
|
|
options.times = []; |
|
|
|
options.currentTime = moment(options.date).format('YYYY-MM-DD HH'); |
|
|
|
let now = moment(options.date).add(1, 'h') |
|
|
@ -1166,12 +1259,27 @@ export default { |
|
|
|
} |
|
|
|
options.times.reverse(); |
|
|
|
options.index = options.times.length - 1; |
|
|
|
// options.chartTimeData = ['0'] |
|
|
|
// options.times.forEach(i => { |
|
|
|
// options.chartTimeData.push(moment(i.date).format('MM-DD HH')) |
|
|
|
// }) |
|
|
|
} |
|
|
|
|
|
|
|
const initTimeLineDay = () => { |
|
|
|
if (options.timeLineFormat == "day") return; |
|
|
|
options.timeLineFormat = "day"; |
|
|
|
options.times = []; |
|
|
|
options.currentTime = moment(options.date).format('YYYY-MM-DD'); |
|
|
|
let now = moment(options.date).add(1, 'd'); |
|
|
|
let day = new Date(now.year(), now.month() + 1, 0); |
|
|
|
for (let i = 0; i < 24; i++) { |
|
|
|
options.times.push({ |
|
|
|
day: now.add(-1, 'd').format('DD'), |
|
|
|
month: now.format('MM'), |
|
|
|
date: now.format('YYYY-MM-DD'), |
|
|
|
}) |
|
|
|
} |
|
|
|
options.times.reverse(); |
|
|
|
options.index = options.times.length - 1; |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
//时间选择 |
|
|
|
const onTimeClick = (time, index) => { |
|
|
|
options.currentTime = time.date; |
|
|
@ -1191,25 +1299,33 @@ export default { |
|
|
|
|
|
|
|
//上一天 |
|
|
|
const onPrevDayClick = () => { |
|
|
|
let element = getCurrentElement(); |
|
|
|
options.date = moment(options.date).add(-1, 'day').format('YYYY-MM-DD'); |
|
|
|
|
|
|
|
let element = getCurrentElement(); |
|
|
|
if (moment(options.date).add(-1, 'day').format('YYYY-MM-DD') == moment().format('YYYY-MM-DD') ) { |
|
|
|
options.date = moment().format('YYYY-MM-DD HH') |
|
|
|
} |
|
|
|
else options.date = moment(options.date).add(-1, 'day').format('YYYY-MM-DD'); |
|
|
|
options.currentTime = options.date; |
|
|
|
options.index--; |
|
|
|
if (options.index < 0) { |
|
|
|
options.index = element.childElementCount - 1; |
|
|
|
options.date = options.times[options.times.length - 1].date |
|
|
|
} |
|
|
|
options.timeLineFormat = "day"; |
|
|
|
initTimeLine() |
|
|
|
// cancelActive(); |
|
|
|
// setCurrentPlayElement(element) |
|
|
|
reloadChangeData() |
|
|
|
elementChange(options.currentElement) |
|
|
|
} |
|
|
|
|
|
|
|
const onNextDayClick = () => { |
|
|
|
options.date = moment(options.date).add(1, 'day').format('YYYY-MM-DD') |
|
|
|
if (moment(options.date).add(1, 'day').format('YYYY-MM-DD') == moment().format('YYYY-MM-DD') ) { |
|
|
|
options.date = moment().format('YYYY-MM-DD HH') |
|
|
|
} |
|
|
|
else options.date = moment(options.date).add(1, 'day').format('YYYY-MM-DD') |
|
|
|
options.timeLineFormat = "day"; |
|
|
|
initTimeLine() |
|
|
|
reloadChangeData() |
|
|
|
elementChange(options.currentElement) |
|
|
|
} |
|
|
|
|
|
|
|
//上一张图片 |
|
|
@ -1283,8 +1399,18 @@ export default { |
|
|
|
// activeImage(); |
|
|
|
// } |
|
|
|
|
|
|
|
const onChange = () => { |
|
|
|
initTimeLine(); |
|
|
|
const onChange = (e) => { |
|
|
|
if (options.currentElement === 'extinction' || options.currentElement=== 'lidarratio' || options.currentElement === 'watervapor') { |
|
|
|
options.timeLineFormat = "hour"; |
|
|
|
initTimeLineDay() |
|
|
|
} |
|
|
|
else { |
|
|
|
if (moment(e).format('YYYY-MM-DD') == moment().format('YYYY-MM-DD') ) { |
|
|
|
options.date = moment().format('YYYY-MM-DD HH') |
|
|
|
} |
|
|
|
options.timeLineFormat = "day"; |
|
|
|
initTimeLine(); |
|
|
|
} |
|
|
|
elementChange(options.currentElement) |
|
|
|
// setTitle(moment(options.date)); |
|
|
|
// activeImage(); |
|
|
@ -1368,6 +1494,28 @@ export default { |
|
|
|
elementChange(element) |
|
|
|
} |
|
|
|
|
|
|
|
const onDayClick = (time, index) => { |
|
|
|
options.timeLineFormat = "hour" |
|
|
|
options.currentTime = time.date; |
|
|
|
options.date = moment(time.date).format('YYYY-MM-DD'); |
|
|
|
options.index = index; |
|
|
|
elementChange(options.currentElement) |
|
|
|
} |
|
|
|
|
|
|
|
const onPrevDayTimeClick = () => { |
|
|
|
options.timeLineFormat = "hour" |
|
|
|
options.date = moment(options.date).add(-1, 'day').format('YYYY-MM-DD'); |
|
|
|
initTimeLineDay() |
|
|
|
elementChange(options.currentElement) |
|
|
|
} |
|
|
|
|
|
|
|
const onNextDayTimeClick = () => { |
|
|
|
options.timeLineFormat = "hour" |
|
|
|
options.date = moment(options.date).add(1, 'day').format('YYYY-MM-DD'); |
|
|
|
initTimeLineDay() |
|
|
|
elementChange(options.currentElement) |
|
|
|
} |
|
|
|
|
|
|
|
return { |
|
|
|
...toRefs(options), |
|
|
|
onRegionClick, |
|
|
@ -1384,7 +1532,10 @@ export default { |
|
|
|
// onDownloadClick, |
|
|
|
// onSaveClick, |
|
|
|
onTabClick, |
|
|
|
onElementClick |
|
|
|
onElementClick, |
|
|
|
onDayClick, |
|
|
|
onPrevDayTimeClick, |
|
|
|
onNextDayTimeClick |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
@ -1425,36 +1576,41 @@ export default { |
|
|
|
margin-top: 30px; |
|
|
|
|
|
|
|
#watervapor_single_chart { |
|
|
|
transform: scale(1.0, 1.0) translateX(9%); |
|
|
|
transform: translateX(9%) translateY(15px); |
|
|
|
//transform: scale(1.0, 0.8) translateX(539px); |
|
|
|
} |
|
|
|
|
|
|
|
#extinction_optics_chart { |
|
|
|
//transform: scale(0.56, 0.85) translateX(-32%); |
|
|
|
transform: scale(1.0, 1) translateX(9%); |
|
|
|
transform: translateX(9%) translateY(50px); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
#pm2_5_chart { |
|
|
|
transform: scale(1.0, 1) translateX(-50px); |
|
|
|
transform: translateX(-50px) translateY(50px); |
|
|
|
} |
|
|
|
|
|
|
|
#pm10_chart { |
|
|
|
transform: scale(1.0, 1) translateX(-50px); |
|
|
|
transform: translateX(-50px) translateY(50px); |
|
|
|
} |
|
|
|
|
|
|
|
#backscatter_chart { |
|
|
|
transform: scale(1.0, 1) translateX(9%); |
|
|
|
transform: translateX(9%) translateY(50px); |
|
|
|
//transform: scale(0.6, 0.85) translateX(-76px); |
|
|
|
} |
|
|
|
|
|
|
|
#cloud_sol_chart { |
|
|
|
transform: scale(1.0, 1) translateX(9%); |
|
|
|
transform: translateX(9%) translateY(50px); |
|
|
|
//transform: scale(0.6, 0.85) translate(-12%, -12px); |
|
|
|
} |
|
|
|
|
|
|
|
#cloud_recognition_chart, #extinction_chart, #watervapor_chart { |
|
|
|
transform: scale(1.0, 1) translateX(9%); |
|
|
|
//#cloud_recognition_chart, |
|
|
|
#extinction_chart-before, |
|
|
|
#extinction_chart-after, |
|
|
|
#watervapor_chart-before, |
|
|
|
#watervapor_chart-after |
|
|
|
{ |
|
|
|
transform: translateX(-50px) translateY(50px); |
|
|
|
//transform: scale(0.6, 0.8) translateX(-260px); |
|
|
|
//transform: scale(0.6, 0.8) translateX(-131px); |
|
|
|
} |
|
|
|