Browse Source

Merge remote-tracking branch 'remotes/origin/master'

master
xiaowuler 3 years ago
parent
commit
5f837394b2
  1. 9
      04.系统编码/Frontend/.idea/workspace.xml
  2. 2
      04.系统编码/Frontend/index.html
  3. BIN
      04.系统编码/Frontend/public/favicon.ico
  4. 48
      04.系统编码/Frontend/src/components/MicrowaveRadiation.vue
  5. 43
      04.系统编码/Frontend/src/components/RamanLidar.vue
  6. 1
      04.系统编码/Frontend/src/components/Shared/Header.vue
  7. 2
      04.系统编码/Frontend/src/components/SynergyEvaluation.vue
  8. 8
      04.系统编码/Frontend/src/index.less
  9. 13
      04.系统编码/Frontend/src/router/index.ts
  10. 1
      04.系统编码/Frontend/src/uilts/axios.ts
  11. 18
      04.系统编码/Frontend/src/uilts/storage.ts

9
04.系统编码/Frontend/.idea/workspace.xml

@ -1,7 +1,13 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ChangeListManager">
<list default="true" id="4b7d7b72-f5b8-41e4-85d5-6267bdc12fc5" name="默认变更列表" comment="" />
<list default="true" id="4b7d7b72-f5b8-41e4-85d5-6267bdc12fc5" name="默认变更列表" comment="">
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/components/Shared/Header.vue" beforeDir="false" afterPath="$PROJECT_DIR$/src/components/Shared/Header.vue" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/router/index.ts" beforeDir="false" afterPath="$PROJECT_DIR$/src/router/index.ts" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/uilts/axios.ts" beforeDir="false" afterPath="$PROJECT_DIR$/src/uilts/axios.ts" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/uilts/storage.ts" beforeDir="false" afterPath="$PROJECT_DIR$/src/uilts/storage.ts" afterDir="false" />
</list>
<option name="SHOW_DIALOG" value="false" />
<option name="HIGHLIGHT_CONFLICTS" value="true" />
<option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
@ -80,6 +86,7 @@
<workItem from="1638447904778" duration="262000" />
<workItem from="1638496246090" duration="1527000" />
<workItem from="1638497917929" duration="12367000" />
<workItem from="1638515445129" duration="7072000" />
</task>
<task id="LOCAL-00001" summary="2021 12 01">
<created>1638357539757</created>

2
04.系统编码/Frontend/index.html

@ -4,7 +4,7 @@
<meta charset="UTF-8">
<link rel="icon" href="/favicon.ico" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Vite App</title>
<title>南京生态环境评估决策平台</title>
</head>
<body>
<div id="app"></div>

BIN
04.系统编码/Frontend/public/favicon.ico

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.2 KiB

After

Width:  |  Height:  |  Size: 9.4 KiB

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

@ -68,13 +68,13 @@
</div>
<div class="btns-group">
<span @click="onPlayClick">{{isPlay ? '暂停动画' : '播放动画'}}</span>
<span>下载动画</span>
<a @click="onDownloadClick">下载动画</a> <!-- :href=""-->
</div>
</div>
<div class="picture-view">
<span class="arrow arrow-prev" @click="onPrevImgClick"><img src="/images/prev-btn.png" /></span>
<span class="arrow arrow-next" @click="onNextImgClick"><img src="/images/next-btn.png" /></span>
<a href="/images/picture1.png" download class="save-btn"><img src="/images/save.png" /></a>
<a :href="downloadImgUrl" download class="save-btn"><img src="/images/save.png" /></a>
<div class="picture-container">
<h2 class="title">{{title}}</h2>
<div class="picture">
@ -83,6 +83,7 @@
:preview-src-list="srcList"
:initial-index="0"
fit="contain"
@load="onImageLoad"
>
<template #error>
<div class="image-slot">
@ -122,6 +123,7 @@
times: [],
currentTime: null,
imgUrl: '/images/default-picture.png',
downloadImgUrl: '/images/default-picture.png',
srcList: [],
isPlay: false,
title: null,
@ -190,6 +192,42 @@
options.srcList = [options.imgUrl];
}
const onImageLoad = (event) => {
if (event.currentTarget.getAttribute('src') !== '/images/default-picture.png')
converToBase64(options.imgUrl);
else
return
}
const onDownloadClick = () => {
let params = {
model: 'weibo',
station: options.currentRegion,
element: options.currentElement,
type: options.currentTab,
time: [options.times[0].date, options.times[options.times.length - 1].date],
urls: []
}
}
const converToBase64 = (path) => {
let img = new Image();
img.src = path;
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");
options.downloadImgUrl = base64;
};
}
const initTimeLine = () => {
options.times = [];
options.currentTime = moment(options.date).hour(parseInt(options.currentHour)).format('YYYY-MM-DD HH:mm');
@ -292,7 +330,7 @@
options.index = 0;
setCurrentPlayElement(element);
}, 2000)
}, 5000)
}
const clearTimer = () => {
@ -333,7 +371,9 @@
onNextImgClick,
onRefreshClick,
onPlayClick,
onChange
onChange,
onImageLoad,
onDownloadClick
}
}
}

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

@ -49,13 +49,13 @@
</div>
<div class="btns-group">
<span @click="onPlayClick">{{isPlay ? '暂停动画' : '播放动画'}}</span>
<span>下载动画</span>
<a @click="onDownloadClick">下载动画</a> <!-- :href=""-->
</div>
</div>
<div class="picture-view">
<span class="arrow arrow-prev" @click="onPrevImgClick"><img src="/images/prev-btn.png" /></span>
<span class="arrow arrow-next" @click="onNextImgClick"><img src="/images/next-btn.png" /></span>
<span class="save-btn"><img src="/images/save.png" /></span>
<a :href="downloadImgUrl" download class="save-btn"><img src="/images/save.png" /></a>
<div class="picture-container">
<h2 class="title">{{title}}</h2>
<div class="picture">
@ -64,6 +64,7 @@
:preview-src-list="srcList"
:initial-index="1"
fit="contain"
@load="onImageLoad"
>
<template #error>
<div class="image-slot">
@ -101,6 +102,7 @@
times: [],
currentTime: null,
imgUrl: '/images/default-picture.png',
downloadImgUrl: '/images/default-picture.png',
srcList: [],
isPlay: false,
title: null,
@ -143,6 +145,37 @@
options.srcList = [options.imgUrl];
}
const onImageLoad = (event) => {
if (event.currentTarget.getAttribute('src') !== '/images/default-picture.png')
converToBase64(options.imgUrl);
else
return
}
const onDownloadClick = () => {
let params = {
station: options.currentRegion
}
}
const converToBase64 = (path) => {
let img = new Image();
img.src = path;
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");
options.downloadImgUrl = base64;
};
}
const initTimeLine = () => {
options.times = [];
options.currentTime = moment(options.date).hour(parseInt(options.currentHour)).format('YYYY-MM-DD HH:mm');
@ -245,7 +278,7 @@
options.index = 0;
setCurrentPlayElement(element);
}, 2000)
}, 5000)
}
const clearTimer = () => {
@ -284,7 +317,9 @@
onNextImgClick,
onRefreshClick,
onPlayClick,
onChange
onChange,
onImageLoad,
onDownloadClick
}
}
}

1
04.系统编码/Frontend/src/components/Shared/Header.vue

@ -68,7 +68,6 @@
span{
padding: 10px;
cursor: pointer;
border: 1px solid grey;
background-color: #498DF0;
border-radius: 10px;
}

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

@ -50,7 +50,7 @@
</div>
</div>
<div class="container panel synergy-container">
<span class="save-btn"><img src="/images/save.png" /></span>
<span class="save-btn" ><img src="/images/save.png" /></span>
<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>

8
04.系统编码/Frontend/src/index.less

@ -323,7 +323,7 @@ img {
}
.btns-group {
span {
span, a {
width: 0.88rem;
height: 0.33rem;
line-height: 0.33rem;
@ -332,10 +332,10 @@ img {
border-radius: 4px;
cursor: pointer;
background-color: #ECF4FF;
}
&:last-of-type {
margin-left: 0.06rem;
}
a {
margin-left: 0.06rem;
}
}
}

13
04.系统编码/Frontend/src/router/index.ts

@ -1,4 +1,5 @@
import {createRouter, createWebHashHistory} from 'vue-router';
import {getStaff} from "../uilts/storage";
const routes: any = [
{ path: '/', redirect: '/Login'},
@ -15,4 +16,16 @@ const router = createRouter({
routes,
linkActiveClass: 'active'
})
router.beforeEach((to,form,next)=>{
if (getStaff('login_staff')){
next()
}else {
if (to.path =="/Login"){
next()
}else {
next('/Login')
}
}
})
export default router;

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

@ -11,7 +11,6 @@ const service = axios.create({
})
service.interceptors.request.use(config => {
loading = ElLoading.service({
customClass: 'loading',
spinner: 'el-icon-loading',

18
04.系统编码/Frontend/src/uilts/storage.ts

@ -1,17 +1,17 @@
import router from "../router";
function guid() {
return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {
var r = Math.random() * 16 | 0,
v = c == 'x' ? r : (r & 0x3 | 0x8);
return v.toString(16);
});
}
export function setStaff(key: any, staff: any) {
localStorage.setItem(key, JSON.stringify(staff));
localStorage.setItem(key, guid());
}
export function getStaff(key: any) {
let data = localStorage.getItem(key);
if(data !== null) {
return JSON.parse(data);
} else {
router.push({path: '/Login'});
}
return null;
return localStorage.getItem(key)
}
export function clear() {

Loading…
Cancel
Save