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"?> <?xml version="1.0" encoding="UTF-8"?>
<project version="4"> <project version="4">
<component name="ChangeListManager"> <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="SHOW_DIALOG" value="false" />
<option name="HIGHLIGHT_CONFLICTS" value="true" /> <option name="HIGHLIGHT_CONFLICTS" value="true" />
<option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" /> <option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
@ -80,6 +86,7 @@
<workItem from="1638447904778" duration="262000" /> <workItem from="1638447904778" duration="262000" />
<workItem from="1638496246090" duration="1527000" /> <workItem from="1638496246090" duration="1527000" />
<workItem from="1638497917929" duration="12367000" /> <workItem from="1638497917929" duration="12367000" />
<workItem from="1638515445129" duration="7072000" />
</task> </task>
<task id="LOCAL-00001" summary="2021 12 01"> <task id="LOCAL-00001" summary="2021 12 01">
<created>1638357539757</created> <created>1638357539757</created>

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

@ -4,7 +4,7 @@
<meta charset="UTF-8"> <meta charset="UTF-8">
<link rel="icon" href="/favicon.ico" /> <link rel="icon" href="/favicon.ico" />
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Vite App</title> <title>南京生态环境评估决策平台</title>
</head> </head>
<body> <body>
<div id="app"></div> <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>
<div class="btns-group"> <div class="btns-group">
<span @click="onPlayClick">{{isPlay ? '暂停动画' : '播放动画'}}</span> <span @click="onPlayClick">{{isPlay ? '暂停动画' : '播放动画'}}</span>
<span>下载动画</span> <a @click="onDownloadClick">下载动画</a> <!-- :href=""-->
</div> </div>
</div> </div>
<div class="picture-view"> <div class="picture-view">
<span class="arrow arrow-prev" @click="onPrevImgClick"><img src="/images/prev-btn.png" /></span> <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="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"> <div class="picture-container">
<h2 class="title">{{title}}</h2> <h2 class="title">{{title}}</h2>
<div class="picture"> <div class="picture">
@ -83,6 +83,7 @@
:preview-src-list="srcList" :preview-src-list="srcList"
:initial-index="0" :initial-index="0"
fit="contain" fit="contain"
@load="onImageLoad"
> >
<template #error> <template #error>
<div class="image-slot"> <div class="image-slot">
@ -122,6 +123,7 @@
times: [], times: [],
currentTime: null, currentTime: null,
imgUrl: '/images/default-picture.png', imgUrl: '/images/default-picture.png',
downloadImgUrl: '/images/default-picture.png',
srcList: [], srcList: [],
isPlay: false, isPlay: false,
title: null, title: null,
@ -190,6 +192,42 @@
options.srcList = [options.imgUrl]; 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 = () => { const initTimeLine = () => {
options.times = []; options.times = [];
options.currentTime = moment(options.date).hour(parseInt(options.currentHour)).format('YYYY-MM-DD HH:mm'); options.currentTime = moment(options.date).hour(parseInt(options.currentHour)).format('YYYY-MM-DD HH:mm');
@ -292,7 +330,7 @@
options.index = 0; options.index = 0;
setCurrentPlayElement(element); setCurrentPlayElement(element);
}, 2000) }, 5000)
} }
const clearTimer = () => { const clearTimer = () => {
@ -333,7 +371,9 @@
onNextImgClick, onNextImgClick,
onRefreshClick, onRefreshClick,
onPlayClick, onPlayClick,
onChange onChange,
onImageLoad,
onDownloadClick
} }
} }
} }

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

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

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

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

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

@ -50,7 +50,7 @@
</div> </div>
</div> </div>
<div class="container panel synergy-container"> <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="element-select" v-if="currentTab === 'element-change-trend' || currentTab === 'element-monitor'">
<div class="surface-temperature" v-if="currentTab === 'element-change-trend'"> <div class="surface-temperature" v-if="currentTab === 'element-change-trend'">
<span @click="onSurfaceTemperatureClick('time0130')" :class="{'active': currentSurfaceTemperatureTime === 'time0130'}">地表温度01:30</span> <span @click="onSurfaceTemperatureClick('time0130')" :class="{'active': currentSurfaceTemperatureTime === 'time0130'}">地表温度01:30</span>

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

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

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

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

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

@ -11,7 +11,6 @@ const service = axios.create({
}) })
service.interceptors.request.use(config => { service.interceptors.request.use(config => {
loading = ElLoading.service({ loading = ElLoading.service({
customClass: 'loading', customClass: 'loading',
spinner: 'el-icon-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) { export function setStaff(key: any, staff: any) {
localStorage.setItem(key, JSON.stringify(staff)); localStorage.setItem(key, guid());
} }
export function getStaff(key: any) { export function getStaff(key: any) {
let data = localStorage.getItem(key); return localStorage.getItem(key)
if(data !== null) {
return JSON.parse(data);
} else {
router.push({path: '/Login'});
}
return null;
} }
export function clear() { export function clear() {

Loading…
Cancel
Save