Browse Source

commit

master
hehongxing 3 years ago
parent
commit
c40704af24
  1. 2
      04.系统编码/Backend/src/main/java/com/userinformation/backend/service/ImageService.java
  2. 40
      04.系统编码/Frontend/src/components/DecisionSupport.vue
  3. 28
      04.系统编码/Frontend/src/components/MicrowaveRadiation.vue
  4. 55
      04.系统编码/Frontend/src/components/RamanLidar.vue
  5. 41
      04.系统编码/Frontend/src/components/SynergyEvaluation.vue
  6. 4
      04.系统编码/Frontend/src/uilts/axios.ts

2
04.系统编码/Backend/src/main/java/com/userinformation/backend/service/ImageService.java

@ -66,7 +66,7 @@ public class ImageService {
e.setRepeat(0);
e.start(targetPath);
for(File file : files){
e.setDelay(500);
e.setDelay(1000);
BufferedImage bufferedImage = ImageIO.read(file);
e.addFrame(bufferedImage);
}

40
04.系统编码/Frontend/src/components/DecisionSupport.vue

@ -19,7 +19,10 @@
</div>
</div>
<div class="container panel decision-container">
<span class="save-btn"><img src="/images/save.png" /></span>
<span class="save-btn" @click="onSaveClick"><img src="/images/save.png" /></span>
<div class="download-pictures" id="pictures">
<a v-for="(url, index) in urls" :key="index" download></a>
</div>
<div class="picture-view advice-picture-view" v-if="currentIndicator === 'plan-advice'">
<el-row :gutter="0">
@ -115,7 +118,8 @@ import { post } from '../uilts/axios';
preview: []
}],
indicatorImg: '/product/picture/images/decision-support/pollution-indicator/pollution-indicator.png',
indicatorPreview: ['/product/picture/images/decision-support/pollution-indicator/pollution-indicator.png']
indicatorPreview: ['/product/picture/images/decision-support/pollution-indicator/pollution-indicator.png'],
urls: []
})
onMounted(() => {
@ -138,6 +142,8 @@ import { post } from '../uilts/axios';
for(let index = 0; index < 6; index ++){
initImage(type, options.items[index].imgName, index);
}
options.urls = options.items;
}
const initImage = (type, imgName, index) => {
@ -152,10 +158,38 @@ import { post } from '../uilts/axios';
})
}
const onSaveClick = () => {
let pictures = document.getElementById('pictures');
for (let i = 0; i < options.urls.length; i++) {
let img = new Image();
img.src = options.urls[i].imgUrl;
let canvas = document.createElement("canvas") as HTMLCanvasElement;
canvas.width = img.width;
canvas.height = img.height;
let ctx = canvas.getContext("2d");
let base64 = '';
img.setAttribute("crossOrigin",'Anonymous');
img.onload = function() {
ctx.drawImage(img, 0, 0);
base64 = canvas.toDataURL("image/png");
pictures.children[i].setAttribute('href', base64);
let button: HTMLElement = pictures.children[i] as HTMLElement;
setTimeout(() => {
button.click();
}, 500);
};
}
}
return {
...toRefs(options),
onIndicatorClick,
onProductClick
onProductClick,
onSaveClick
}
}
}

28
04.系统编码/Frontend/src/components/MicrowaveRadiation.vue

@ -68,8 +68,8 @@
</div>
<div class="btns-group">
<span @click="onPlayClick">{{isPlay ? '暂停动画' : '播放动画'}}</span>
<a @click="onDownloadClick">下载动画</a> <!-- :href=""-->
<a id="weboDownload" download :href='downloadSrc' style="display: none;">下载隐藏层</a>
<a @click="onDownloadClick">下载动画</a>
<a id="weboDownload" download :href="downloadSrc" style="display: none;">下载隐藏层</a>
</div>
</div>
<div class="picture-view">
@ -119,7 +119,7 @@ import { post } from '../uilts/axios';
currentType: 'TEMP',
currentElement: 'TEMPERATURE',
currentCategory: 'CAPE',
date: moment('2020-07-01').format('YYYY-MM-DD'),
date: moment('2021-11-01').format('YYYY-MM-DD'),
currentHour: '10',
hours: [],
times: [],
@ -208,13 +208,14 @@ import { post } from '../uilts/axios';
console.log(response.message);
return;
}
fetch(response.data).then(res => {
return res.blob();
}).then(blob => {
let reader = new FileReader();
reader.onloadend = function(){
options.downloadSrc = reader.result;
setTimeout(() => {
document.getElementById("weboDownload").click();
options.downloadSrc = null;
@ -229,7 +230,7 @@ import { post } from '../uilts/axios';
return {
model: 'weibo',
station: options.currentRegion,
elementCode: options.currentElement,
elementCode: options.currentType,
type: options.currentTab,
time: moment(options.times[0].date).format("YYYYMMDDHHmmss") + '-' + moment(options.times[options.times.length - 1].date).format("YYYYMMDDHHmmss"),
urls: prepareUrls()
@ -238,9 +239,8 @@ import { post } from '../uilts/axios';
const prepareUrls = () => {
let urls = [];
for(let index = 0, len = options.hours.length; index < len; index++){
let date = moment(options.times[options.index].date);
let time = moment(options.date).hour(date.hour()).minute(date.minute());
for(let index = 0, len = options.times.length; index < len; index++){
let time = moment(options.times[index].date);
let type = (options.currentTab === 'T-logP' || options.currentTab === 'BPFY') ? options.currentTab : (options.currentTab + '_' + options.currentType);
urls.push(MicrowaveRadiationConfig.getUrl(options.currentRegion, type, time));
}
@ -322,7 +322,6 @@ import { post } from '../uilts/axios';
}
const onPrevImgClick = () => {
console.log(options.index);
let element = getCurrentElement();
options.index--;
@ -344,8 +343,15 @@ import { post } from '../uilts/axios';
const onRefreshClick = () => {
cancelActive();
options.date = moment('2020-07-01').format('YYYY-MM-DD');
let element = getCurrentElement();;
options.currentHour = '10';
options.date = moment('2021-11-01').format('YYYY-MM-DD');
options.currentTime = moment(options.date).hour(parseInt(options.currentHour)).format('YYYY-MM-DD HH:mm');
setTitle(moment(options.currentTime, 'YYYY-MM-DD HH:mm'));
activeImage(moment(options.currentTime).hour(), moment(options.currentTime).minute());
element.children[options.times.length - 1].classList.add('active');
}
const onPlayClick = () => {
@ -360,7 +366,7 @@ import { post } from '../uilts/axios';
const timeExcute = () => {
clearTimer();
let element = getCurrentElement();;
let element = getCurrentElement();
timer = setInterval( () => {
options.index++;

55
04.系统编码/Frontend/src/components/RamanLidar.vue

@ -49,7 +49,8 @@
</div>
<div class="btns-group">
<span @click="onPlayClick">{{isPlay ? '暂停动画' : '播放动画'}}</span>
<a @click="onDownloadClick">下载动画</a> <!-- :href=""-->
<a @click="onDownloadClick">下载动画</a>
<a id="radarDownload" :href="downloadSrc" download style="display: none;">下载隐藏层</a>
</div>
</div>
<div class="picture-view">
@ -87,6 +88,7 @@
import { onMounted, reactive, toRefs } from 'vue';
import moment from "moment";
import { RamanLidarConfig } from '../uilts/Config';
import { post } from '../uilts/axios';
export default {
name: 'RamanLidar',
@ -96,7 +98,7 @@
currentRegion: 'jiangning',
currentElement: 'lidar-ratio',
currentType: '激光雷达比',
date: moment('2020-07-01').format('YYYY-MM-DD'),
date: moment('2021-11-01').format('YYYY-MM-DD'),
currentHour: '10',
hours: [],
times: [],
@ -106,7 +108,8 @@
srcList: [],
isPlay: false,
title: null,
index: 0
index: 0,
downloadSrc: null
})
onMounted(() => {
@ -153,9 +156,48 @@
}
const onDownloadClick = () => {
let params = {
station: options.currentRegion
post("/image/createGif", prepareParams(), 'application/json').then((response: any) => {
if (response.error != 0){
console.log(response.message);
return;
}
fetch(response.data).then(res => {
return res.blob();
}).then(blob => {
let reader = new FileReader();
reader.onloadend = function(){
options.downloadSrc = reader.result;
setTimeout(() => {
document.getElementById("radarDownload").click();
options.downloadSrc = null;
}, 500);
};
reader.readAsDataURL(blob);
}).catch(console.error);
})
}
const prepareParams = () => {
return {
model: 'radar',
station: options.currentRegion,
elementCode: options.currentElement,
type: null,
time: moment(options.times[0].date).format("YYYYMMDDHHmmss") + '-' + moment(options.times[options.times.length - 1].date).format("YYYYMMDDHHmmss"),
urls: prepareUrls()
}
}
const prepareUrls = () => {
let urls = [];
for(let index = 0, len = options.times.length; index < len; index++){
let time = moment(options.times[index].date);
urls.push(RamanLidarConfig.getUrl(options.currentRegion, options.currentElement, time));
}
return urls;
}
const converToBase64 = (path) => {
@ -254,7 +296,8 @@
const onRefreshClick = () => {
cancelActive();
options.date = moment('2020-07-01').format('YYYY-MM-DD');
options.date = moment('2021-11-01').format('YYYY-MM-DD');
options.currentTime = options.times[options.times.length - 1];
options.currentHour = '10';
}

41
04.系统编码/Frontend/src/components/SynergyEvaluation.vue

@ -50,7 +50,10 @@
</div>
</div>
<div class="container panel synergy-container">
<span class="save-btn" ><img src="/images/save.png" /></span>
<span class="save-btn" @click="onSaveClick"><img src="/images/save.png" /></span>
<div class="download-pictures" id="pictures">
<a v-for="(url, index) in urls" :key="index" download></a>
</div>
<div class="element-select" v-if="currentTab === 'element-change-trend' || currentTab === 'element-monitor'">
<div class="surface-temperature" v-if="currentTab === 'element-change-trend'">
<span @click="onSurfaceTemperatureClick('time0130')" :class="{'active': currentSurfaceTemperatureTime === 'time0130'}">地表温度01:30</span>
@ -137,7 +140,7 @@
import { format } from '../uilts/String';
import * as Tiff from 'browser-tiff.js';
import { SynergyEvaluationConfig } from '../uilts/Config';
import { post } from '../uilts/axios';
import { post } from '../uilts/axios';
export default {
name: 'SynergyEvaluation',
@ -231,7 +234,8 @@ import { post } from '../uilts/axios';
type: 'month_12',
imgUrl: '/images/default-picture.png',
preview: []
}]
}],
urls: []
})
onMounted(() => {
@ -242,6 +246,7 @@ import { post } from '../uilts/axios';
for(let index = 0; index < number; index ++){
initImage(options.currentTab, element, values[index].type, index, values);
}
options.urls = values;
}
const initImage = (tabName, elementName, type, index, values) => {
@ -253,7 +258,7 @@ import { post } from '../uilts/axios';
values[index].imgUrl = response.data;
values[index].preview = [response.data];
})
});
}
const onTabClick = (name) => {
@ -294,6 +299,33 @@ import { post } from '../uilts/axios';
setImage(12, options.trendItems, options.currentCategory + '/' + options.currentTime + '/' + options.currentYear);
}
const onSaveClick = () => {
let pictures = document.getElementById('pictures');
for (let i = 0; i < options.urls.length; i++) {
let img = new Image();
img.src = options.urls[i].imgUrl;
let canvas = document.createElement("canvas") as HTMLCanvasElement;
canvas.width = img.width;
canvas.height = img.height;
let ctx = canvas.getContext("2d");
let base64 = '';
img.setAttribute("crossOrigin",'Anonymous');
img.onload = function() {
ctx.drawImage(img, 0, 0);
base64 = canvas.toDataURL("image/png");
pictures.children[i].setAttribute('href', base64);
let button: HTMLElement = pictures.children[i] as HTMLElement;
setTimeout(() => {
button.click();
}, 500);
};
}
}
return {
...toRefs(options),
onTabClick,
@ -302,6 +334,7 @@ import { post } from '../uilts/axios';
onSurfaceTemperatureClick,
onYearClick,
onTimeClick,
onSaveClick
}
}
}

4
04.系统编码/Frontend/src/uilts/axios.ts

@ -5,8 +5,8 @@ import { ElLoading } from 'element-plus'
let loading = null;
const service = axios.create({
// baseURL:"http://112.124.40.88:8002",
baseURL: "http://localhost:8002",
baseURL:"http://112.124.40.88:8002",
// baseURL: "http://localhost:8002",
// baseURL: "",
timeout: 500000
})

Loading…
Cancel
Save