This commit is contained in:
parent
1963108a29
commit
d444168170
|
@ -22,7 +22,7 @@ export default {
|
|||
fixSiderbar: false, // sticky siderbar
|
||||
autoHideHeader: false, // auto hide header
|
||||
colorWeak: false,
|
||||
multipage: true, //默认多页签模式
|
||||
multipage: false, //默认多页签模式
|
||||
// vue-ls options
|
||||
storageOptions: {
|
||||
namespace: 'pro__', // key prefix
|
||||
|
|
|
@ -3,136 +3,93 @@
|
|||
<el-card>
|
||||
<template #header>
|
||||
<span style="font-size: 25px;">
|
||||
数据分析
|
||||
近一年最高气温和最低气温变化情况
|
||||
</span>
|
||||
<span style="float: right;display: flex;">
|
||||
<el-input v-model="adder" placeholder="请输入地址" />
|
||||
<el-button style="margin-left: 10px;" type="primary" @click="goto">开始分析</el-button>
|
||||
<el-button style="margin-left: 10px;" type="primary" @click="goto">刷新</el-button>
|
||||
</span>
|
||||
</template>
|
||||
<div class="center" v-loading="loading">
|
||||
<el-row class="top">
|
||||
<el-col :span="12" class="col1">
|
||||
<div class="title">过去七天最高温度变化</div>
|
||||
<div id="chart1" style="width: 100%;height: 100%;"></div>
|
||||
</el-col>
|
||||
<el-col :span="12" class="col2">
|
||||
<div class="title">阴晴比</div>
|
||||
<div id="chart2" style="width: 100%;height: 100%;"></div>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row class="bottom">
|
||||
<el-col :span="12" class="col1">
|
||||
<div class="title">过去30天风力变化</div>
|
||||
<div id="chart3" style="width: 100%;height: 100%;"></div>
|
||||
</el-col>
|
||||
<el-col :span="12" class="col2">
|
||||
<div class="title">过去30天降雨变化</div>
|
||||
<div id="chart4" style="width: 100%;height: 100%;"></div>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<div id="chart1" style="width: 100%;height: 100%;"></div>
|
||||
</div>
|
||||
|
||||
</el-card>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
|
||||
<script>
|
||||
import { getAction } from '@/api/manage'
|
||||
|
||||
import * as echarts from 'echarts';
|
||||
export default {
|
||||
name: "get",
|
||||
data() {
|
||||
return {
|
||||
loading: false,
|
||||
adder: ''
|
||||
url: "/sy/analysis",
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
this.initChart()
|
||||
this.goto()
|
||||
},
|
||||
methods: {
|
||||
goto() {
|
||||
if (!this.adder) {
|
||||
this.$message.error('请输入地址')
|
||||
return
|
||||
}
|
||||
//加载1.5秒
|
||||
this.loading = true
|
||||
this.$message.info('开始分析' + this.adder + '的天气数据')
|
||||
setTimeout(() => {
|
||||
this.$message.info('开始分析天气数据')
|
||||
getAction(this.url).then((res) => {
|
||||
this.initChart(res.result)
|
||||
this.loading = false
|
||||
}, 2500)
|
||||
})
|
||||
},
|
||||
initChart() {
|
||||
initChart(data) {
|
||||
this.chart1(data.temperature)
|
||||
},
|
||||
chart1(data) {
|
||||
const chart1 = echarts.init(document.getElementById('chart1'))
|
||||
const chart2 = echarts.init(document.getElementById('chart2'))
|
||||
const chart3 = echarts.init(document.getElementById('chart3'))
|
||||
const chart4 = echarts.init(document.getElementById('chart4'))
|
||||
|
||||
const option1 = {
|
||||
const option = {
|
||||
tooltip: {
|
||||
trigger: 'axis'
|
||||
},
|
||||
legend: {
|
||||
data: ['最高温度', '最低温度']
|
||||
},
|
||||
dataZoom: [
|
||||
{
|
||||
type: 'slider',
|
||||
start: 0,
|
||||
end: 100
|
||||
}
|
||||
],
|
||||
xAxis: {
|
||||
type: 'category',
|
||||
data: ['3.31', '4.1', '4.2', '4.3', '4.4', '4.5', '4.6']
|
||||
type: 'time',
|
||||
boundaryGap: false
|
||||
},
|
||||
yAxis: {
|
||||
type: 'value'
|
||||
},
|
||||
series: [
|
||||
{
|
||||
data: [5, 3, 5, 10, 9, 10, 14],
|
||||
type: 'line'
|
||||
}
|
||||
]
|
||||
};
|
||||
const option2 = {
|
||||
tooltip: {
|
||||
trigger: 'item'
|
||||
},
|
||||
legend: {
|
||||
top: '5%',
|
||||
left: 'center'
|
||||
},
|
||||
series: [
|
||||
name: '最高温度',
|
||||
// 转换日期为时间戳,并确保温度为数字类型
|
||||
data: data.highTemperature.map(item => [new Date(item.date).getTime(), +item.temperature]),
|
||||
type: 'line',
|
||||
symbol: "none"
|
||||
},
|
||||
{
|
||||
name: 'Access From',
|
||||
type: 'pie',
|
||||
radius: ['40%', '70%'],
|
||||
avoidLabelOverlap: false,
|
||||
itemStyle: {
|
||||
borderRadius: 10,
|
||||
borderColor: '#fff',
|
||||
borderWidth: 2
|
||||
},
|
||||
label: {
|
||||
show: false,
|
||||
position: 'center'
|
||||
},
|
||||
emphasis: {
|
||||
label: {
|
||||
show: true,
|
||||
fontSize: 40,
|
||||
fontWeight: 'bold'
|
||||
}
|
||||
},
|
||||
labelLine: {
|
||||
show: false
|
||||
},
|
||||
data: [
|
||||
{ value: 1, name: '晴转多云' },
|
||||
{ value: 3, name: '晴' },
|
||||
{ value: 1, name: '多云' },
|
||||
{ value: 1, name: '多云转晴' },
|
||||
]
|
||||
name: '最低温度',
|
||||
// 同上,确保数据格式正确
|
||||
data: data.lowTemperature.map(item => [new Date(item.date).getTime(), +item.temperature]),
|
||||
type: 'line',
|
||||
symbol: "none"
|
||||
}
|
||||
]
|
||||
};
|
||||
|
||||
chart1.setOption(option1)
|
||||
chart2.setOption(option2)
|
||||
// chart3.setOption(option1)
|
||||
// chart4.setOption(option1)
|
||||
}
|
||||
chart1.setOption(option);
|
||||
|
||||
},
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
@ -143,49 +100,6 @@ export default {
|
|||
}
|
||||
|
||||
.center {
|
||||
height: 500px;
|
||||
|
||||
.top {
|
||||
height: 50%;
|
||||
// 下边框
|
||||
border-bottom: 1px solid #dbdada;
|
||||
|
||||
.title {
|
||||
position: fixed;
|
||||
margin-left: 5px;
|
||||
margin-top: 5px;
|
||||
font-size: 20px;
|
||||
}
|
||||
|
||||
.col1 {
|
||||
height: 100%;
|
||||
// 左边框
|
||||
border-right: 1px solid #dbdada;
|
||||
}
|
||||
|
||||
.col2 {
|
||||
height: 100%;
|
||||
}
|
||||
}
|
||||
|
||||
.bottom {
|
||||
height: 50%;
|
||||
|
||||
.title {
|
||||
position: fixed;
|
||||
margin-left: 5px;
|
||||
margin-top: 5px;
|
||||
font-size: 20px;
|
||||
}
|
||||
|
||||
.col1 {
|
||||
height: 100%;
|
||||
border-right: 1px solid #dbdada;
|
||||
}
|
||||
|
||||
.col2 {
|
||||
height: 100%;
|
||||
}
|
||||
}
|
||||
height: 400px;
|
||||
}
|
||||
</style>
|
|
@ -0,0 +1,79 @@
|
|||
<template>
|
||||
<div style="padding: 10px;">
|
||||
<el-card>
|
||||
<template #header>
|
||||
<span style="font-size: 25px;">
|
||||
近一年不同风力风向天数排序情况
|
||||
</span>
|
||||
<span style="float: right;display: flex;">
|
||||
<el-button style="margin-left: 10px;" type="primary" @click="goto">刷新</el-button>
|
||||
</span>
|
||||
</template>
|
||||
<div class="center" v-loading="loading">
|
||||
<div id="chart2" style="width: 100%;height: 100%;"></div>
|
||||
</div>
|
||||
</el-card>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
|
||||
<script>
|
||||
import { getAction } from '@/api/manage'
|
||||
|
||||
import * as echarts from 'echarts';
|
||||
export default {
|
||||
name: "get",
|
||||
data() {
|
||||
return {
|
||||
loading: false,
|
||||
url: "/sy/analysis",
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
this.goto()
|
||||
},
|
||||
methods: {
|
||||
goto() {
|
||||
//加载1.5秒
|
||||
this.loading = true
|
||||
this.$message.info('开始分析天气数据')
|
||||
getAction(this.url).then((res) => {
|
||||
this.initChart(res.result)
|
||||
this.loading = false
|
||||
})
|
||||
},
|
||||
initChart(data) {
|
||||
this.chart2(data.wind)
|
||||
},
|
||||
chart2(data) {
|
||||
const chart2 = echarts.init(document.getElementById('chart2'))
|
||||
const option = {
|
||||
xAxis: {
|
||||
type: 'value',
|
||||
},
|
||||
yAxis: {
|
||||
type: 'category',
|
||||
data: data.wind,
|
||||
},
|
||||
series: [
|
||||
{
|
||||
data: data.count.map((value, index) => [value, index]),
|
||||
type: 'bar'
|
||||
}
|
||||
]
|
||||
};
|
||||
chart2.setOption(option)
|
||||
},
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="less" scoped>
|
||||
.card {
|
||||
padding: 10px;
|
||||
}
|
||||
|
||||
.center {
|
||||
height: 400px;
|
||||
}
|
||||
</style>
|
|
@ -0,0 +1,95 @@
|
|||
<template>
|
||||
<div style="padding: 10px;">
|
||||
<el-card>
|
||||
<template #header>
|
||||
<span style="font-size: 25px;">
|
||||
近一年天气出现的次数
|
||||
</span>
|
||||
<span style="float: right;display: flex;">
|
||||
<el-button style="margin-left: 10px;" type="primary" @click="goto">刷新</el-button>
|
||||
</span>
|
||||
</template>
|
||||
<div class="center" v-loading="loading">
|
||||
<div id="chart3" style="width: 100%;height: 100%;"></div>
|
||||
</div>
|
||||
</el-card>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
|
||||
|
||||
<script>
|
||||
import { getAction } from '@/api/manage'
|
||||
|
||||
import * as echarts from 'echarts';
|
||||
export default {
|
||||
name: "get",
|
||||
data() {
|
||||
return {
|
||||
loading: false,
|
||||
url: "/sy/analysis",
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
this.goto()
|
||||
},
|
||||
methods: {
|
||||
goto() {
|
||||
//加载1.5秒
|
||||
this.loading = true
|
||||
this.$message.info('开始分析天气数据')
|
||||
getAction(this.url).then((res) => {
|
||||
this.initChart(res.result)
|
||||
this.loading = false
|
||||
})
|
||||
},
|
||||
initChart(data) {
|
||||
this.chart3(data.temperatureMap)
|
||||
},
|
||||
chart3(data) {
|
||||
const chart3 = echarts.init(document.getElementById('chart3'))
|
||||
// ECharts 配置
|
||||
const option = {
|
||||
title: {
|
||||
text: '天气情况',
|
||||
left: 'center'
|
||||
},
|
||||
tooltip: {
|
||||
trigger: 'item'
|
||||
},
|
||||
legend: {
|
||||
orient: 'vertical',
|
||||
left: 'left'
|
||||
},
|
||||
series: [
|
||||
{
|
||||
name: 'Access From',
|
||||
type: 'pie',
|
||||
radius: '50%',
|
||||
data: data,
|
||||
emphasis: {
|
||||
itemStyle: {
|
||||
shadowBlur: 10,
|
||||
shadowOffsetX: 0,
|
||||
shadowColor: 'rgba(0, 0, 0, 0.5)'
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
};
|
||||
chart3.setOption(option);
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="less" scoped>
|
||||
.card {
|
||||
padding: 10px;
|
||||
}
|
||||
|
||||
.center {
|
||||
height: 400px;
|
||||
}
|
||||
</style>
|
|
@ -3,123 +3,97 @@
|
|||
<el-card>
|
||||
<template #header>
|
||||
<span style="font-size: 25px;">
|
||||
数据预测
|
||||
天气预测
|
||||
</span>
|
||||
<span style="float: right;display: flex;">
|
||||
<el-input v-model="adder" placeholder="请输入地址" />
|
||||
<el-button style="margin-left: 10px;" type="primary" @click="goto">开始分析</el-button>
|
||||
<el-button style="margin-left: 10px;" type="primary" @click="goto">刷新</el-button>
|
||||
</span>
|
||||
</template>
|
||||
<div class="center" v-loading="loading">
|
||||
<el-row class="top">
|
||||
<el-col :span="12" class="col1">
|
||||
<div class="title">未来气温预测</div>
|
||||
<div id="chart1" style="width: 100%;height: 100%;"></div>
|
||||
</el-col>
|
||||
<el-col :span="12" class="col2">
|
||||
<div class="title">未来天气预测</div>
|
||||
<div id="chart2" style="width: 100%;height: 100%;"></div>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<div id="chart1" style="width: 100%;height: 50%;"></div>
|
||||
<el-table :data="tableData" style="width: 100%;padding-top: 20px;" max-height="250">
|
||||
<el-table-column prop="data" label="日期" width="180">
|
||||
</el-table-column>
|
||||
<el-table-column prop="temperature" label="最高温度" width="180">
|
||||
</el-table-column>
|
||||
<el-table-column prop="weather" label="天气">
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</div>
|
||||
|
||||
</el-card>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
|
||||
<script>
|
||||
import { getAction } from '@/api/manage'
|
||||
|
||||
import * as echarts from 'echarts';
|
||||
export default {
|
||||
name: "get",
|
||||
data() {
|
||||
return {
|
||||
loading: false,
|
||||
adder: ''
|
||||
url: "/sy/fe",
|
||||
tableData: [],
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
this.initChart()
|
||||
this.goto()
|
||||
},
|
||||
methods: {
|
||||
goto() {
|
||||
if (!this.adder) {
|
||||
this.$message.error('请输入地址')
|
||||
return
|
||||
}
|
||||
//加载1.5秒
|
||||
this.loading = true
|
||||
this.$message.info('开始分析' + this.adder + '的天气数据')
|
||||
setTimeout(() => {
|
||||
this.$message.info('开始分析天气数据')
|
||||
getAction(this.url).then((res) => {
|
||||
this.initChart(res.result)
|
||||
this.tableData = res.result.data
|
||||
this.loading = false
|
||||
}, 2500)
|
||||
})
|
||||
},
|
||||
initChart() {
|
||||
const chart1 = echarts.init(document.getElementById('chart1'))
|
||||
const chart2 = echarts.init(document.getElementById('chart2'))
|
||||
initChart(data) {
|
||||
this.chart1(data.data)
|
||||
},
|
||||
chart1(data) {
|
||||
console.log(data);
|
||||
const myChart = echarts.init(document.getElementById('chart1')); // 修改变量名以避免冲突
|
||||
|
||||
const option1 = {
|
||||
const option = {
|
||||
tooltip: {
|
||||
trigger: 'axis'
|
||||
},
|
||||
legend: {
|
||||
data: ['最高温度']
|
||||
},
|
||||
dataZoom: [
|
||||
{
|
||||
type: 'slider',
|
||||
start: 0,
|
||||
end: 100
|
||||
}
|
||||
],
|
||||
xAxis: {
|
||||
type: 'category',
|
||||
data: ['4.6', '4.7', '4.8', '4.9', '4.10', '4.11', '4.12']
|
||||
type: 'time',
|
||||
boundaryGap: false
|
||||
},
|
||||
yAxis: {
|
||||
type: 'value'
|
||||
},
|
||||
series: [
|
||||
{
|
||||
data: [14, 13, 15, 16, 16, 17, 16],
|
||||
type: 'line'
|
||||
}
|
||||
]
|
||||
};
|
||||
const option2 = {
|
||||
tooltip: {
|
||||
trigger: 'item'
|
||||
},
|
||||
legend: {
|
||||
top: '5%',
|
||||
left: 'center'
|
||||
},
|
||||
series: [
|
||||
{
|
||||
name: 'Access From',
|
||||
type: 'pie',
|
||||
radius: ['40%', '70%'],
|
||||
avoidLabelOverlap: false,
|
||||
itemStyle: {
|
||||
borderRadius: 10,
|
||||
borderColor: '#fff',
|
||||
borderWidth: 2
|
||||
},
|
||||
label: {
|
||||
show: false,
|
||||
position: 'center',
|
||||
formatter: '{d}%'
|
||||
},
|
||||
emphasis: {
|
||||
label: {
|
||||
show: true,
|
||||
fontSize: 40,
|
||||
fontWeight: 'bold',
|
||||
formatter: '{d}%'
|
||||
}
|
||||
},
|
||||
labelLine: {
|
||||
show: false
|
||||
},
|
||||
data: [
|
||||
{ value: 80, name: '晴转多云' },
|
||||
{ value: 15, name: '晴' },
|
||||
{ value: 5, name: '多云' },
|
||||
]
|
||||
name: '最高温度',
|
||||
// 确保日期格式正确,并且温度是数字类型
|
||||
data: data.map(item => [new Date(item.data.replace(/-/g, '/')).getTime(), +item.temperature]),
|
||||
type: 'line',
|
||||
symbol: "none"
|
||||
}
|
||||
]
|
||||
};
|
||||
|
||||
chart1.setOption(option1)
|
||||
chart2.setOption(option2)
|
||||
myChart.setOption(option);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
@ -131,26 +105,5 @@ export default {
|
|||
|
||||
.center {
|
||||
height: 500px;
|
||||
|
||||
.top {
|
||||
height: 100%;
|
||||
|
||||
.title {
|
||||
position: fixed;
|
||||
margin-left: 5px;
|
||||
margin-top: 5px;
|
||||
font-size: 20px;
|
||||
}
|
||||
|
||||
.col1 {
|
||||
height: 100%;
|
||||
// 左边框
|
||||
border-right: 1px solid #dbdada;
|
||||
}
|
||||
|
||||
.col2 {
|
||||
height: 100%;
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
|
@ -10,23 +10,20 @@
|
|||
<a href="https://www.tianqishi.com/" target="_blank">天气史查询</a>
|
||||
</span>
|
||||
<span style="float: right;display: flex;">
|
||||
<el-input v-model="adder" placeholder="请输入地址" />
|
||||
<el-button style="margin-left: 10px;" type="success" @click="goto">开始爬取</el-button>
|
||||
</span>
|
||||
</template>
|
||||
<div class="center" v-loading="loading">
|
||||
<el-table :data="tableData" height="500" stripe style="width: 100%">
|
||||
<el-table-column prop="data1" label="日期" />
|
||||
<el-table-column prop="data2" label="气温" />
|
||||
<el-table-column prop="data3" label="天气情况" />
|
||||
<el-table-column prop="data4" label="风向" />
|
||||
<el-table-column prop="data5" label="风力" />
|
||||
<el-table-column prop="data6" label="日出" />
|
||||
<el-table-column prop="data7" label="日落" />
|
||||
<el-table-column prop="data" label="日期" />
|
||||
<el-table-column prop="highTemperature" label="最高温度" />
|
||||
<el-table-column prop="lowTemperature" label="最低温度" />
|
||||
<el-table-column prop="dayOrNight" label="天气情况" />
|
||||
<el-table-column prop="air" label="AQI" />
|
||||
<el-table-column prop="windSpeed" label="风力" />
|
||||
<el-table-column prop="totalRainfall" label="降水量" />
|
||||
</el-table>
|
||||
</div>
|
||||
|
||||
|
||||
</el-card>
|
||||
</div>
|
||||
</template>
|
||||
|
@ -38,204 +35,20 @@ export default {
|
|||
name: "get",
|
||||
data() {
|
||||
return {
|
||||
tableData: [{ 'data1': '20240405', 'data2': '7~14℃', 'data3': '晴转多云', 'data4': '西南风', 'data5': '3-4', 'data6': '05:06', 'data7': '18:07' }
|
||||
,
|
||||
{ 'data1': '20240404', 'data2': '0~10℃', 'data3': '晴', 'data4': '西北风', 'data5': '1-3', 'data6': '05:08', 'data7': '18:06' }
|
||||
,
|
||||
{ 'data1': '20240403', 'data2': '-2~9℃', 'data3': '多云', 'data4': '西北风', 'data5': '1-3', 'data6': '05:09', 'data7': '18:05' }
|
||||
,
|
||||
{ 'data1': '20240402', 'data2': '-3~10℃', 'data3': '晴', 'data4': '西南风', 'data5': '1-3', 'data6': '05:11', 'data7': '18:03' }
|
||||
,
|
||||
{ 'data1': '20240401', 'data2': '-4~5℃', 'data3': '晴', 'data4': '西北风', 'data5': '1-3', 'data6': '05:13', 'data7': '18:02' }
|
||||
,
|
||||
{ 'data1': '20240331', 'data2': '-5~3℃', 'data3': '多云转晴', 'data4': '西北风', 'data5': '1-3', 'data6': '05:15', 'data7': '18:01' }
|
||||
,
|
||||
{ 'data1': '20240330', 'data2': '-5~5℃', 'data3': '阵雨转多云', 'data4': '西北风', 'data5': '3-4', 'data6': '05:17', 'data7': '18:00' }
|
||||
,
|
||||
{ 'data1': '20240329', 'data2': '-3~5℃', 'data3': '多云', 'data4': '西南风', 'data5': '3-4', 'data6': '05:19', 'data7': '17:58' }
|
||||
,
|
||||
{ 'data1': '20240328', 'data2': '-4~10℃', 'data3': '多云转晴', 'data4': '西南风', 'data5': '4-5', 'data6': '05:21', 'data7': '17:57' }
|
||||
,
|
||||
{ 'data1': '20240327', 'data2': '6~12℃', 'data3': '阵雨转小雨', 'data4': '西南风', 'data5': '3-4', 'data6': '05:23', 'data7': '17:56' }
|
||||
,
|
||||
{ 'data1': '20240326', 'data2': '-2~11℃', 'data3': '晴', 'data4': '东南风', 'data5': '1-3', 'data6': '05:25', 'data7': '17:54' }
|
||||
,
|
||||
{ 'data1': '20240325', 'data2': '-3~10℃', 'data3': '晴', 'data4': '东北风', 'data5': '1-3', 'data6': '05:27', 'data7': '17:53' }
|
||||
,
|
||||
{ 'data1': '20240324', 'data2': '-5~6℃', 'data3': '晴', 'data4': '西北风', 'data5': '1-3', 'data6': '05:29', 'data7': '17:52' }
|
||||
,
|
||||
{ 'data1': '20240323', 'data2': '-6~8℃', 'data3': '阵雨转晴', 'data4': '西南风', 'data5': '1-3', 'data6': '05:31', 'data7': '17:50' }
|
||||
,
|
||||
{ 'data1': '20240322', 'data2': '-3~10℃', 'data3': '多云转雨夹雪', 'data4': '东南风', 'data5': '1-3', 'data6': '05:32', 'data7': '17:49' }
|
||||
,
|
||||
{ 'data1': '20240321', 'data2': '-5~5℃', 'data3': '晴', 'data4': '东南风', 'data5': '1-3', 'data6': '05:34', 'data7': '17:48' }
|
||||
,
|
||||
{ 'data1': '20240320', 'data2': '-8~3℃', 'data3': '晴', 'data4': '西北风', 'data5': '1-3', 'data6': '05:36', 'data7': '17:46' }
|
||||
,
|
||||
{ 'data1': '20240319', 'data2': '-7~3℃', 'data3': '晴转多云', 'data4': '西北风', 'data5': '1-3', 'data6': '05:38', 'data7': '17:45' }
|
||||
,
|
||||
{ 'data1': '20240318', 'data2': '-8~2℃', 'data3': '多云转晴', 'data4': '北风', 'data5': '1-3', 'data6': '05:40', 'data7': '17:44' }
|
||||
,
|
||||
{ 'data1': '20240317', 'data2': '-8~2℃', 'data3': '晴', 'data4': '西北风', 'data5': '3-4', 'data6': '05:42', 'data7': '17:42' }
|
||||
,
|
||||
{ 'data1': '20240316', 'data2': '-6~5℃', 'data3': '雨夹雪转小雪', 'data4': '东南风', 'data5': '1-3', 'data6': '05:44', 'data7': '17:41' }
|
||||
,
|
||||
{ 'data1': '20240315', 'data2': '-5~7℃', 'data3': '晴转多云', 'data4': '西北风', 'data5': '1-3', 'data6': '05:46', 'data7': '17:40' }
|
||||
,
|
||||
{ 'data1': '20240314', 'data2': '0~9℃', 'data3': '多云', 'data4': '西南风', 'data5': '1-3', 'data6': '05:48', 'data7': '17:38' }
|
||||
,
|
||||
{ 'data1': '20240313', 'data2': '-2~7℃', 'data3': '晴转多云', 'data4': '西南风', 'data5': '1-3', 'data6': '05:50', 'data7': '17:37' }
|
||||
,
|
||||
{ 'data1': '20240312', 'data2': '-5~6℃', 'data3': '晴', 'data4': '西南风', 'data5': '1-3', 'data6': '05:52', 'data7': '17:36' }
|
||||
,
|
||||
{ 'data1': '20240311', 'data2': '-7~5℃', 'data3': '多云转晴', 'data4': '西北风', 'data5': '1-3', 'data6': '05:53', 'data7': '17:34' }
|
||||
,
|
||||
{ 'data1': '20240310', 'data2': '-7~7℃', 'data3': '晴', 'data4': '西南风', 'data5': '1-3', 'data6': '05:55', 'data7': '17:33' }
|
||||
,
|
||||
{ 'data1': '20240309', 'data2': '-13~1℃', 'data3': '晴', 'data4': '西南风', 'data5': '1-3', 'data6': '05:57', 'data7': '17:32' }
|
||||
,
|
||||
{ 'data1': '20240308', 'data2': '-14~-3℃', 'data3': '多云转晴', 'data4': '西北风', 'data5': '1-3', 'data6': '05:59', 'data7': '17:30' }
|
||||
,
|
||||
{ 'data1': '20240307', 'data2': '-11~1℃', 'data3': '多云', 'data4': '西南风', 'data5': '1-3', 'data6': '06:01', 'data7': '17:29' }
|
||||
,
|
||||
{ 'data1': '20240306', 'data2': '-14~-1℃', 'data3': '晴', 'data4': '西北风', 'data5': '1-3', 'data6': '06:03', 'data7': '17:28' }
|
||||
,
|
||||
{ 'data1': '20240305', 'data2': '-14~-1℃', 'data3': '晴', 'data4': '西北风', 'data5': '1-3', 'data6': '06:05', 'data7': '17:26' }
|
||||
,
|
||||
{ 'data1': '20240304', 'data2': '-12~-2℃', 'data3': '晴', 'data4': '西北风', 'data5': '1-3', 'data6': '06:06', 'data7': '17:25' }
|
||||
,
|
||||
{ 'data1': '20240303', 'data2': '-16~-5℃', 'data3': '多云转晴', 'data4': '西北风', 'data5': '1-3', 'data6': '06:08', 'data7': '17:23' }
|
||||
,
|
||||
{ 'data1': '20240302', 'data2': '-17~-7℃', 'data3': '晴', 'data4': '西北风', 'data5': '1-3', 'data6': '06:10', 'data7': '17:22' }
|
||||
,
|
||||
{ 'data1': '20240301', 'data2': '-17~-7℃', 'data3': '多云转晴', 'data4': '西北风', 'data5': '1-3', 'data6': '06:12', 'data7': '17:21' }
|
||||
,
|
||||
{ 'data1': '20240229', 'data2': '-13~-5℃', 'data3': '阵雪转小雪', 'data4': '西南风', 'data5': '1-3', 'data6': '06:14', 'data7': '17:19' }
|
||||
,
|
||||
{ 'data1': '20240228', 'data2': '-15~-4℃', 'data3': '多云', 'data4': '西北风', 'data5': '1-3', 'data6': '06:15', 'data7': '17:18' }
|
||||
,
|
||||
{ 'data1': '20240227', 'data2': '-9~-4℃', 'data3': '多云转小雪', 'data4': '西南风', 'data5': '1-3', 'data6': '06:17', 'data7': '17:16' }
|
||||
,
|
||||
{ 'data1': '20240226', 'data2': '-18~-5℃', 'data3': '晴', 'data4': '西北风', 'data5': '1-3', 'data6': '06:19', 'data7': '17:15' }
|
||||
,
|
||||
{ 'data1': '20240225', 'data2': '-15~-2℃', 'data3': '晴', 'data4': '西北风', 'data5': '1-3', 'data6': '06:21', 'data7': '17:14' }
|
||||
,
|
||||
{ 'data1': '20240224', 'data2': '-14~-3℃', 'data3': '多云', 'data4': '西南风', 'data5': '1-3', 'data6': '06:22', 'data7': '17:12' }
|
||||
,
|
||||
{ 'data1': '20240223', 'data2': '-17~-5℃', 'data3': '晴', 'data4': '西北风', 'data5': '1-3', 'data6': '06:24', 'data7': '17:11' }
|
||||
,
|
||||
{ 'data1': '20240222', 'data2': '-19~-8℃', 'data3': '晴', 'data4': '西北风', 'data5': '1-3', 'data6': '06:26', 'data7': '17:09' }
|
||||
,
|
||||
{ 'data1': '20240221', 'data2': '-21~-10℃', 'data3': '晴', 'data4': '西北风', 'data5': '1-3', 'data6': '06:27', 'data7': '17:08' }
|
||||
,
|
||||
{ 'data1': '20240220', 'data2': '-23~-12℃', 'data3': '晴', 'data4': '西风', 'data5': '1-3', 'data6': '06:29', 'data7': '17:06' }
|
||||
,
|
||||
{ 'data1': '20240219', 'data2': '-18~-9℃', 'data3': '多云转晴', 'data4': '西北风', 'data5': '3-4', 'data6': '06:31', 'data7': '17:05' }
|
||||
,
|
||||
{ 'data1': '20240218', 'data2': '-11~4℃', 'data3': '雨夹雪转小雪', 'data4': '西南风', 'data5': '1-3', 'data6': '06:32', 'data7': '17:03' }
|
||||
,
|
||||
{ 'data1': '20240217', 'data2': '3~6℃', 'data3': '多云', 'data4': '西南风', 'data5': '3-4', 'data6': '06:34', 'data7': '17:02' }
|
||||
,
|
||||
{ 'data1': '20240216', 'data2': '-2~0℃', 'data3': '晴转多云', 'data4': '西南风', 'data5': '1-3', 'data6': '06:36', 'data7': '17:01' }
|
||||
,
|
||||
{ 'data1': '20240215', 'data2': '-17~-7℃', 'data3': '晴', 'data4': '西北风', 'data5': '1-3', 'data6': '06:37', 'data7': '16:59' }
|
||||
,
|
||||
{ 'data1': '20240214', 'data2': '-17~-2℃', 'data3': '多云转晴', 'data4': '西北风', 'data5': '1-3', 'data6': '06:39', 'data7': '16:58' }
|
||||
,
|
||||
{ 'data1': '20240213', 'data2': '-6~5℃', 'data3': '晴', 'data4': '西南风', 'data5': '3-4', 'data6': '06:40', 'data7': '16:56' }
|
||||
,
|
||||
{ 'data1': '20240212', 'data2': '2~3℃', 'data3': '晴', 'data4': '西南风', 'data5': '3-4', 'data6': '06:42', 'data7': '16:55' }
|
||||
,
|
||||
{ 'data1': '20240211', 'data2': '-12~-4℃', 'data3': '晴', 'data4': '西南风', 'data5': '1-3', 'data6': '06:43', 'data7': '16:53' }
|
||||
,
|
||||
{ 'data1': '20240210', 'data2': '-14~-6℃', 'data3': '多云', 'data4': '西南风', 'data5': '1-3', 'data6': '06:44', 'data7': '16:52' }
|
||||
,
|
||||
{ 'data1': '20240209', 'data2': '-18~-7℃', 'data3': '晴转多云', 'data4': '西南风', 'data5': '1-3', 'data6': '06:46', 'data7': '16:50' }
|
||||
,
|
||||
{ 'data1': '20240208', 'data2': '-22~-8℃', 'data3': '晴', 'data4': '西南风', 'data5': '1-3', 'data6': '06:47', 'data7': '16:49' }
|
||||
,
|
||||
{ 'data1': '20240207', 'data2': '-23~-8℃', 'data3': '晴', 'data4': '西南风', 'data5': '1-3', 'data6': '06:49', 'data7': '16:47' }
|
||||
,
|
||||
{ 'data1': '20240206', 'data2': '-25~-9℃', 'data3': '多云转晴', 'data4': '西北风', 'data5': '1-3', 'data6': '06:50', 'data7': '16:46' }
|
||||
,
|
||||
{ 'data1': '20240205', 'data2': '-24~-11℃', 'data3': '晴转多云', 'data4': '东北风', 'data5': '1-3', 'data6': '06:51', 'data7': '16:44' }
|
||||
,
|
||||
{ 'data1': '20240204', 'data2': '-27~-11℃', 'data3': '晴', 'data4': '西北风', 'data5': '1-3', 'data6': '06:53', 'data7': '16:43' }
|
||||
,
|
||||
{ 'data1': '20240203', 'data2': '-27~-12℃', 'data3': '晴', 'data4': '西南风', 'data5': '1-3', 'data6': '06:54', 'data7': '16:41' }
|
||||
,
|
||||
{ 'data1': '20240202', 'data2': '-28~-14℃', 'data3': '晴', 'data4': '西北风', 'data5': '1-3', 'data6': '06:55', 'data7': '16:40' }
|
||||
,
|
||||
{ 'data1': '20240201', 'data2': '-25~-16℃', 'data3': '晴', 'data4': '西南风', 'data5': '1-3', 'data6': '06:56', 'data7': '16:39' }
|
||||
,
|
||||
{ 'data1': '20240131', 'data2': '-28~-16℃', 'data3': '晴', 'data4': '西北风', 'data5': '1-3', 'data6': '06:57', 'data7': '16:37' }
|
||||
,
|
||||
{ 'data1': '20240130', 'data2': '-23~-15℃', 'data3': '阵雪转小雪', 'data4': '东北风', 'data5': '1-3', 'data6': '06:59', 'data7': '16:36' }
|
||||
,
|
||||
{ 'data1': '20240129', 'data2': '-27~-14℃', 'data3': '晴', 'data4': '西北风', 'data5': '1-3', 'data6': '07:00', 'data7': '16:34' }
|
||||
,
|
||||
{ 'data1': '20240128', 'data2': '-20~-8℃', 'data3': '晴转多云', 'data4': '东南风', 'data5': '1-3', 'data6': '07:01', 'data7': '16:33' }
|
||||
,
|
||||
{ 'data1': '20240127', 'data2': '-23~-11℃', 'data3': '晴', 'data4': '西南风', 'data5': '1-3', 'data6': '07:02', 'data7': '16:31' }
|
||||
,
|
||||
{ 'data1': '20240126', 'data2': '-23~-14℃', 'data3': '多云', 'data4': '西北风', 'data5': '1-3', 'data6': '07:03', 'data7': '16:30' }
|
||||
,
|
||||
{ 'data1': '20240125', 'data2': '-24~-10℃', 'data3': '多云', 'data4': '西南风', 'data5': '1-3', 'data6': '07:04', 'data7': '16:28' }
|
||||
,
|
||||
{ 'data1': '20240124', 'data2': '-26~-15℃', 'data3': '晴', 'data4': '西北风', 'data5': '1-3', 'data6': '07:05', 'data7': '16:27' }
|
||||
,
|
||||
{ 'data1': '20240123', 'data2': '-24~-16℃', 'data3': '阵雪转多云', 'data4': '西北风', 'data5': '1-3', 'data6': '07:06', 'data7': '16:26' }
|
||||
,
|
||||
{ 'data1': '20240122', 'data2': '-31~-19℃', 'data3': '多云转晴', 'data4': '西北风', 'data5': '1-3', 'data6': '07:06', 'data7': '16:24' }
|
||||
,
|
||||
{ 'data1': '20240121', 'data2': '-22~-18℃', 'data3': '小雪转阵雪', 'data4': '东北风', 'data5': '1-3', 'data6': '07:07', 'data7': '16:23' }
|
||||
,
|
||||
{ 'data1': '20240120', 'data2': '-22~-15℃', 'data3': '多云转小雪', 'data4': '东北风', 'data5': '1-3', 'data6': '07:08', 'data7': '16:21' }
|
||||
,
|
||||
{ 'data1': '20240119', 'data2': '-27~-15℃', 'data3': '晴', 'data4': '东北风', 'data5': '1-3', 'data6': '07:09', 'data7': '16:20' }
|
||||
,
|
||||
{ 'data1': '20240118', 'data2': '-27~-15℃', 'data3': '晴', 'data4': '东北风', 'data5': '1-3', 'data6': '07:09', 'data7': '16:19' }
|
||||
,
|
||||
{ 'data1': '20240117', 'data2': '-21~-6℃', 'data3': '晴', 'data4': '西北风', 'data5': '1-3', 'data6': '07:10', 'data7': '16:17' }
|
||||
,
|
||||
{ 'data1': '20240116', 'data2': '-11~-5℃', 'data3': '晴', 'data4': '西南风', 'data5': '1-3', 'data6': '07:11', 'data7': '16:16' }
|
||||
,
|
||||
{ 'data1': '20240115', 'data2': '-23~-14℃', 'data3': '晴', 'data4': '西北风', 'data5': '1-3', 'data6': '07:11', 'data7': '16:15' }
|
||||
,
|
||||
{ 'data1': '20240114', 'data2': '-23~-13℃', 'data3': '晴', 'data4': '西北风', 'data5': '3-4', 'data6': '07:12', 'data7': '16:14' }
|
||||
,
|
||||
{ 'data1': '20240113', 'data2': '-17~-13℃', 'data3': '多云转小雪', 'data4': '西南风', 'data5': '1-3', 'data6': '07:12', 'data7': '16:12' }
|
||||
,
|
||||
{ 'data1': '20240112', 'data2': '-29~-16℃', 'data3': '多云', 'data4': '西北风', 'data5': '1-3', 'data6': '07:13', 'data7': '16:11' }
|
||||
,
|
||||
{ 'data1': '20240111', 'data2': '-26~-11℃', 'data3': '小雪转多云', 'data4': '西北风', 'data5': '1-3', 'data6': '07:13', 'data7': '16:10' }
|
||||
,
|
||||
{ 'data1': '20240110', 'data2': '-10~-8℃', 'data3': '晴转小雪', 'data4': '西南风', 'data5': '1-3', 'data6': '07:13', 'data7': '16:09' }
|
||||
,
|
||||
{ 'data1': '20240109', 'data2': '-23~-15℃', 'data3': '晴', 'data4': '西北风', 'data5': '1-3', 'data6': '07:14', 'data7': '16:08' }
|
||||
,
|
||||
{ 'data1': '20240108', 'data2': '-26~-11℃', 'data3': '晴', 'data4': '西南风', 'data5': '1-3', 'data6': '07:14', 'data7': '16:06' }
|
||||
,
|
||||
{ 'data1': '20240107', 'data2': '-23~-17℃', 'data3': '多云转晴', 'data4': '西北风', 'data5': '1-3', 'data6': '07:14', 'data7': '16:05' }
|
||||
,
|
||||
],
|
||||
tableData: [],
|
||||
loading: false,
|
||||
adder: ''
|
||||
url: "/sy/get",
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
goto() {
|
||||
// 如果没有输入地址
|
||||
if (!this.adder) {
|
||||
this.$message.error('请输入地址')
|
||||
return
|
||||
}
|
||||
//加载1.5秒
|
||||
this.loading = true
|
||||
this.$message.info('开始爬取' + this.adder + '的天气数据')
|
||||
setTimeout(() => {
|
||||
this.$message.info('开始爬取哈尔滨的天气数据')
|
||||
getAction(this.url).then((res) => {
|
||||
this.tableData = res.result
|
||||
this.loading = false
|
||||
}, 2500)
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -126,13 +126,6 @@ export default {
|
|||
width: 100,
|
||||
dataIndex: 'realname',
|
||||
},
|
||||
{
|
||||
title: '头像',
|
||||
align: "center",
|
||||
width: 120,
|
||||
dataIndex: 'avatar',
|
||||
scopedSlots: { customRender: "avatarslot" }
|
||||
},
|
||||
{
|
||||
title: '状态',
|
||||
align: "center",
|
||||
|
|
|
@ -4,23 +4,24 @@
|
|||
天气分析系统
|
||||
</div>
|
||||
<a-form-model class="user-layout-login" @keyup.enter.native="handleSubmit">
|
||||
<!-- 登录修改 -->
|
||||
<login-account ref="alogin" @validateFail="validateFail" @success="requestSuccess"
|
||||
@fail="requestFailed"></login-account>
|
||||
|
||||
<a-form-item style="margin-top:24px">
|
||||
<a-button size="large" type="primary" htmlType="submit" class="login-button red-button" :loading="loginBtn"
|
||||
<a-button size="large" type="primary" htmlType="submit" class="login-button" :loading="loginBtn"
|
||||
@click.stop.prevent="handleSubmit" :disabled="loginBtn">确定
|
||||
</a-button>
|
||||
</a-form-item>
|
||||
<router-link :to="{ name: 'register' }" class="forge-password" style="float: right;margin-right: 10px">
|
||||
注册账户
|
||||
</router-link>
|
||||
|
||||
</a-form-model>
|
||||
|
||||
<two-step-captcha v-if="requiredTwoStepCaptcha" :visible="stepCaptchaVisible" @success="stepCaptchaSuccess"
|
||||
@cancel="stepCaptchaCancel"></two-step-captcha>
|
||||
<login-select-tenant ref="loginSelect" @success="loginSelectOk"></login-select-tenant>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
|
||||
<script>
|
||||
import Vue from 'vue'
|
||||
import { ACCESS_TOKEN, ENCRYPTED_STRING } from '@/store/mutation-types'
|
||||
|
|
|
@ -31,41 +31,6 @@
|
|||
<a-form-model-item prop="password2">
|
||||
<a-input v-model="model.password2" size="large" type="password" autocomplete="false" placeholder="确认密码"></a-input>
|
||||
</a-form-model-item>
|
||||
|
||||
<a-form-model-item prop="mobile">
|
||||
<a-input v-model="model.mobile" size="large" placeholder="11 位手机号">
|
||||
<a-select slot="addonBefore" size="large" defaultValue="+86">
|
||||
<a-select-option value="+86">+86</a-select-option>
|
||||
<a-select-option value="+87">+87</a-select-option>
|
||||
</a-select>
|
||||
</a-input>
|
||||
</a-form-model-item>
|
||||
<!--<a-input-group size="large" compact>
|
||||
<a-select style="width: 20%" size="large" defaultValue="+86">
|
||||
<a-select-option value="+86">+86</a-select-option>
|
||||
<a-select-option value="+87">+87</a-select-option>
|
||||
</a-select>
|
||||
<a-input style="width: 80%" size="large" placeholder="11 位手机号"></a-input>
|
||||
</a-input-group>-->
|
||||
|
||||
<a-row :gutter="16">
|
||||
<a-col class="gutter-row" :span="16">
|
||||
<a-form-model-item prop="captcha">
|
||||
<a-input v-model="model.captcha" size="large" type="text" placeholder="验证码">
|
||||
<a-icon slot="prefix" type="mail" :style="{ color: 'rgba(0,0,0,.25)' }"/>
|
||||
</a-input>
|
||||
</a-form-model-item>
|
||||
</a-col>
|
||||
<a-col class="gutter-row" :span="8">
|
||||
<a-button
|
||||
class="getCaptcha"
|
||||
size="large"
|
||||
:disabled="state.smsSendBtn"
|
||||
@click.stop.prevent="getCaptcha"
|
||||
v-text="!state.smsSendBtn && '获取验证码'||(state.time+' s')"></a-button>
|
||||
</a-col>
|
||||
</a-row>
|
||||
|
||||
<a-form-model-item>
|
||||
<a-button
|
||||
size="large"
|
||||
|
@ -121,7 +86,6 @@
|
|||
],
|
||||
password: [
|
||||
{ required: false},
|
||||
{ validator: this.handlePasswordLevel }
|
||||
],
|
||||
password2: [
|
||||
{ required: false },
|
||||
|
@ -187,38 +151,6 @@
|
|||
}
|
||||
})
|
||||
},
|
||||
handlePasswordLevel(rule, value, callback) {
|
||||
let level = 0
|
||||
let reg = /^(?=.*[a-zA-Z])(?=.*\d)(?=.*[~!@#$%^&*()_+`\-={}:";'<>?,./]).{8,}$/;
|
||||
if (!reg.test(value)) {
|
||||
callback(new Error('密码由8位数字、大小写字母和特殊符号组成!'))
|
||||
}
|
||||
// 判断这个字符串中有没有数字
|
||||
if (/[0-9]/.test(value)) {
|
||||
level++
|
||||
}
|
||||
// 判断字符串中有没有字母
|
||||
if (/[a-zA-Z]/.test(value)) {
|
||||
level++
|
||||
}
|
||||
// 判断字符串中有没有特殊符号
|
||||
if (/[^0-9a-zA-Z_]/.test(value)) {
|
||||
level++
|
||||
}
|
||||
this.state.passwordLevel = level
|
||||
this.state.percent = level * 30
|
||||
if (level >= 2) {
|
||||
if (level >= 3) {
|
||||
this.state.percent = 100
|
||||
}
|
||||
callback()
|
||||
} else {
|
||||
if (level === 0) {
|
||||
this.state.percent = 10
|
||||
}
|
||||
callback(new Error('密码强度不够'))
|
||||
}
|
||||
},
|
||||
|
||||
handlePasswordCheck(rule, value, callback) {
|
||||
let password = this.model['password']
|
||||
|
|
Loading…
Reference in New Issue