zhaoyun 1 mēnesi atpakaļ
vecāks
revīzija
066258fa05

+ 6 - 0
src/router/router-static.js

@@ -17,6 +17,7 @@ import rainfalldata from '@/views/modules/rainfalldata/list';
 import rainfalldataforecast from '@/views/modules/rainfalldataforecast/list';
 import syslog from '@/views/modules/syslog/list';
 import Station from '@/views/modules/station/list';
+import Weather from '@/views/modules/weather/list';
 import loadData from '@/views/modules/load-data/index';
 import loadForecasting from '@/views/modules/load-forecasting/index';
 
@@ -39,6 +40,11 @@ export const routes = [
         name: '变电站',
         component: Station,
       },
+	  {
+	    path: '/weather',
+	    name: '天气数据',
+	    component: Weather,
+	  },
       {
         path: '/loadData',
         name: '历史数据',

+ 11 - 0
src/utils/menu.js

@@ -14,6 +14,17 @@ const menu = {
             ],
             menu: '变电站管理',
           },
+		  {
+		    child: [
+		      {
+		        appFrontIcon: 'cuIcon-qrcode',
+		        menu: '天气数据',
+		        menuJump: '列表',
+		        tableName: 'weather',
+		      },
+		    ],
+		    menu: '天气数据',
+		  },
           {
             child: [
               {

+ 0 - 49
src/views/modules/station/list.vue

@@ -210,55 +210,6 @@
 			</span>
 		</el-dialog>
 
-		<el-dialog
-			:visible.sync="chartVisiable1"
-			width="800">
-			<div id="accumulatedrainfallChart1" style="width:100%;height:600px;"></div>
-			<span slot="footer" class="dialog-footer">
-				<el-button @click="chartDialog1">返回</el-button>
-			</span>
-		</el-dialog>
-		<el-dialog
-			:visible.sync="chartVisiable2"
-			width="800">
-			<div id="dailyrainfallChart2" style="width:100%;height:600px;"></div>
-			<span slot="footer" class="dialog-footer">
-				<el-button @click="chartDialog2">返回</el-button>
-			</span>
-		</el-dialog>
-		<el-dialog
-			:visible.sync="chartVisiable3"
-			width="800">
-			<div id="terraintypeChart3" style="width:100%;height:600px;"></div>
-			<span slot="footer" class="dialog-footer">
-				<el-button @click="chartDialog3">返回</el-button>
-			</span>
-		</el-dialog>
-		<el-dialog
-			:visible.sync="chartVisiable4"
-			width="800">
-			<div id="cityChart4" style="width:100%;height:600px;"></div>
-			<span slot="footer" class="dialog-footer">
-				<el-button @click="chartDialog4">返回</el-button>
-			</span>
-		</el-dialog>
-		<el-dialog
-			:visible.sync="chartVisiable5"
-			width="800">
-			<div id="temperatureChart5" style="width:100%;height:600px;"></div>
-			<span slot="footer" class="dialog-footer">
-				<el-button @click="chartDialog5">返回</el-button>
-			</span>
-		</el-dialog>
-		<el-dialog
-			:visible.sync="chartVisiable6"
-			width="800">
-			<div id="dailyrainfallChart6" style="width:100%;height:600px;"></div>
-			<span slot="footer" class="dialog-footer">
-				<el-button @click="chartDialog6">返回</el-button>
-			</span>
-		</el-dialog>
-
 	</div>
 </template>
 

+ 706 - 0
src/views/modules/weather/add-or-update.vue

@@ -0,0 +1,706 @@
+<template>
+	<div class="addEdit-block">
+		<el-form
+			class="add-update-preview"
+			ref="ruleForm"
+			:model="ruleForm"
+			:rules="rules"
+			label-width="180px"
+		>
+			<template >
+				<el-form-item class="date" v-if="type!='info'" label="日期" prop="recordDate" >
+					<el-date-picker
+						format="yyyy 年 MM 月 dd 日"
+						value-format="yyyy-MM-dd"
+						v-model="ruleForm.recordDate" 
+						type="date"
+						:readonly="ro.recordDate"
+						placeholder="日期"
+					></el-date-picker> 
+				</el-form-item>
+				<el-form-item class="input" v-else-if="ruleForm.recordDate" label="日期" prop="date" >
+					<el-input v-model="ruleForm.recordDate" placeholder="日期" readonly></el-input>
+				</el-form-item>
+				<el-form-item class="input" v-if="type!='info'"  label="地区" prop="region" >
+						<el-input v-model="ruleForm.region" placeholder="地区" :disabled="ro.region"></el-input>
+				</el-form-item>
+				<el-form-item v-else class="input" label="地区" prop="region" >
+					<el-input v-model="ruleForm.region" placeholder="地区" readonly></el-input>
+				</el-form-item>
+				<el-form-item class="input" v-if="type!='info'"  label="最低温度" prop="temperatures" >
+					<el-input v-model="ruleForm.temperatures" placeholder="最低温度" :disabled="ro.temperatures"></el-input>
+				</el-form-item>
+				<el-form-item v-else class="input" label="最低温度" prop="temperatures" >
+					<el-input v-model="ruleForm.temperatures" placeholder="最低温度" readonly></el-input>
+				</el-form-item>
+			</template>
+			<el-form-item class="btn">
+				<el-button class="btn3"  v-if="type!='info'" type="success" @click="onSubmit">
+					<span class="icon iconfont icon-xihuan"></span>
+					提交
+				</el-button>
+				<el-button class="btn4" v-if="type!='info'" type="success" @click="back()">
+					<span class="icon iconfont icon-xihuan"></span>
+					取消
+				</el-button>
+				<el-button class="btn5" v-if="type=='info'" type="success" @click="back()">
+					<span class="icon iconfont icon-xihuan"></span>
+					返回
+				</el-button>
+			</el-form-item>
+		</el-form>
+    
+
+	</div>
+</template>
+<script>
+	import { 
+		isNumber,
+		isIntNumer,
+	} from "@/utils/validate";
+	export default {
+		data() {
+			var validateNumber = (rule, value, callback) => {
+				if(!value){
+					callback();
+				} else if (!isNumber(value)) {
+					callback(new Error("请输入数字"));
+				} else {
+					callback();
+				}
+			};
+			var validateIntNumber = (rule, value, callback) => {
+				if(!value){
+					callback();
+				} else if (!isIntNumer(value)) {
+					callback(new Error("请输入整数"));
+				} else {
+					callback();
+				}
+			};
+			return {
+				id: '',
+				type: '',
+			   regionList: [],
+			
+				ro:{
+					region : false,
+					recordDate : false,
+					temperatures : false,
+					
+				},
+			
+				ruleForm: {
+					region : '',
+					recordDate : '',
+					temperatures : 0,
+				},
+
+				rules: {
+					
+					region: [
+					],
+					recordDate: [
+					],
+					temperatures: [
+						
+					]
+				},
+			};
+		},
+		props: ["parent"],
+		computed: {
+
+
+
+		},
+		components: {
+		},
+		created() {
+			//this.getRegionList();
+		},
+		methods: {
+			// 获取公司列表
+			async getRegionList() {
+			  this.regionList = [];
+			  const { data } = await this.$http({
+			    url: `/company/lists`,
+			    method: 'get',
+			    params: {
+			      cityId: this.ruleForm.cityId,
+			    },
+			  });
+			  if (data && data.code === 0) {
+			    this.regionList = data.data.map(item => ({
+			      label: item.compName,
+			      value: item.id,
+			    }));
+			  }
+			},
+			// 下载
+			download(file){
+				window.open(`${file}`)
+			},
+			// 初始化
+			init(id,type) {
+				if (id) {
+					this.id = id;
+					this.type = type;
+				}
+				if(this.type=='info'||this.type=='else'||this.type=='msg'){
+					this.info(id);
+				}else if(this.type=='logistics'){
+					for(let x in this.ro) {
+						this.ro[x] = true
+					}
+					this.logistics=false;
+					this.info(id);
+				}else if(this.type=='cross'){
+					var obj = this.$storage.getObj('crossObj');
+					for (var o in obj){
+						
+						if(o=='region'){
+							this.ruleForm.region = obj[o];
+							this.ro.region = true;
+							continue;
+						}
+						if(o=='recordDate'){
+							this.ruleForm.recordDate = obj[o];
+							this.ro.recordDate = true;
+							continue;
+						}
+						if(o=='temperatures'){
+							this.ruleForm.temperatures = obj[o];
+							this.ro.temperatures = true;
+							continue;
+						}
+						
+						
+					}
+				}
+				// 获取用户信息
+				this.$http({
+					url: `${this.$storage.get('sessionTable')}/session`,
+					method: "get"
+				}).then(({ data }) => {
+					if (data && data.code === 0) {
+						var json = data.data;
+					} else {
+						this.$message.error(data.msg);
+					}
+				});
+			
+			},
+			// 多级联动参数
+
+			info(id) {
+				this.$http({
+					url: `regionWeather/info/${id}`,
+					method: "get"
+				}).then(({ data }) => {
+					if (data && data.code === 0) {
+						this.ruleForm = data.data;
+						//解决前台上传图片后台不显示的问题
+						let reg=new RegExp('../../../upload','g')//g代表全部
+					} else {
+						this.$message.error(data.msg);
+					}
+				});
+			},
+
+			// 提交
+			async onSubmit() {
+					var objcross = this.$storage.getObj('crossObj');
+					if(!this.ruleForm.id) {
+						delete this.ruleForm.userid
+					}
+					await this.$refs["ruleForm"].validate(async valid => {
+						if (valid) {
+							if(this.type=='cross'){
+								var statusColumnName = this.$storage.get('statusColumnName');
+								var statusColumnValue = this.$storage.get('statusColumnValue');
+								if(statusColumnName!='') {
+									var obj = this.$storage.getObj('crossObj');
+									if(statusColumnName && !statusColumnName.startsWith("[")) {
+										for (var o in obj){
+											if(o==statusColumnName){
+												obj[o] = statusColumnValue;
+											}
+										}
+										var table = this.$storage.get('crossTable');
+										await this.$http({
+											url: `${table}/update`,
+											method: "post",
+											data: obj
+										}).then(({ data }) => {});
+									}
+								}
+							}
+							
+							await this.$http({
+								url: `regionWeather/${!this.ruleForm.id ? "save" : "update"}`,
+								method: "post",
+								data: this.ruleForm
+							}).then(async ({ data }) => {
+								if (data && data.code === 0) {
+									this.$message({
+										message: "操作成功",
+										type: "success",
+										duration: 1500,
+										onClose: () => {
+											this.parent.showFlag = true;
+											this.parent.addOrUpdateFlag = false;
+											this.parent.rainfalldataCrossAddOrUpdateFlag = false;
+											this.parent.search();
+											this.parent.contentStyleChange();
+										}
+									});
+								} else {
+									this.$message.error(data.msg);
+								}
+							});
+						}
+					});
+			},
+			// 获取uuid
+			getUUID () {
+				return new Date().getTime();
+			},
+			// 返回
+			back() {
+				this.parent.showFlag = true;
+				this.parent.addOrUpdateFlag = false;
+				this.parent.rainfalldataCrossAddOrUpdateFlag = false;
+				this.parent.contentStyleChange();
+			},
+		}
+	};
+</script>
+<style lang="scss" scoped>
+	.addEdit-block {
+		padding: 30px;
+		background: none;
+		width: 100%;
+	}
+	.add-update-preview {
+		border-radius: 10px;
+		padding: 40px 25% 40px 18%;
+		background: #ffffff;
+		border-color: #eee;
+		border-width: 1px;
+		border-style: solid;
+	}
+	.amap-wrapper {
+		width: 100%;
+		height: 500px;
+	}
+	
+	.search-box {
+		position: absolute;
+	}
+	
+	.el-date-editor.el-input {
+		width: auto;
+	}
+	.add-update-preview ::v-deep .el-form-item {
+		border: 0px solid #eee;
+		padding: 0;
+		margin: 0 0 22px 0;
+		display: inline-block;
+		width: 100%;
+	}
+	.add-update-preview .el-form-item ::v-deep .el-form-item__label {
+		padding: 0 10px 0 0;
+		color: #6e6e6e;
+		font-weight: 500;
+		width: 180px;
+		font-size: 15px;
+		line-height: 40px;
+		text-align: right;
+	}
+	
+	.add-update-preview .el-form-item ::v-deep .el-form-item__content {
+		margin-left: 180px;
+	}
+	.add-update-preview .el-form-item span.text {
+		padding: 0 10px;
+		color: #333;
+		background: none;
+		font-weight: 500;
+		display: inline-block;
+		font-size: 15px;
+		line-height: 40px;
+		min-width: 50%;
+	}
+	
+	.add-update-preview .el-input {
+		width: 100%;
+	}
+	.add-update-preview .el-input ::v-deep .el-input__inner {
+		border: 1px solid #E8E8E8;
+		border-radius: 0px;
+		padding: 0 12px;
+		color: #666;
+		background: #fff;
+		width: 100%;
+		font-size: 15px;
+		min-width: 50%;
+		height: 40px;
+	}
+	.add-update-preview .el-input ::v-deep .el-input__inner[readonly="readonly"] {
+		border: 0px solid #ccc;
+		cursor: not-allowed;
+		border-radius: 0px;
+		padding: 0 12px;
+		color: #666;
+		background: none;
+		width: auto;
+		font-size: 15px;
+		height: 40px;
+	}
+	.add-update-preview .el-input-number {
+		text-align: left;
+		width: 100%;
+	}
+	.add-update-preview .el-input-number ::v-deep .el-input__inner {
+		text-align: left;
+		border: 1px solid #E8E8E8;
+		border-radius: 0px;
+		padding: 0 12px;
+		color: #666;
+		background: #fff;
+		width: 100%;
+		font-size: 15px;
+		min-width: 50%;
+		height: 40px;
+	}
+	.add-update-preview .el-input-number ::v-deep .is-disabled .el-input__inner {
+		text-align: left;
+		border: 0px solid #ccc;
+		cursor: not-allowed;
+		border-radius: 0px;
+		padding: 0 12px;
+		color: #666;
+		background: none;
+		width: auto;
+		font-size: 15px;
+		height: 40px;
+	}
+	.add-update-preview .el-input-number ::v-deep .el-input-number__decrease {
+		display: none;
+	}
+	.add-update-preview .el-input-number ::v-deep .el-input-number__increase {
+		display: none;
+	}
+	.add-update-preview .el-select {
+		width: 100%;
+	}
+	.add-update-preview .el-select ::v-deep .el-input__inner {
+		border: 1px solid #E8E8E8;
+		border-radius: 0px;
+		padding: 0 10px;
+		color: #666;
+		background: #fff;
+		width: 100%;
+		font-size: 15px;
+		height: 40px;
+	}
+	.add-update-preview .el-select ::v-deep .is-disabled .el-input__inner {
+		border: 0;
+		cursor: not-allowed;
+		border-radius: 4px;
+		padding: 0 10px;
+		color: #666;
+		background: none;
+		width: auto;
+		font-size: 15px;
+		height: 34px;
+	}
+	.add-update-preview .el-date-editor {
+		width: 100%;
+	}
+	.add-update-preview .el-date-editor ::v-deep .el-input__inner {
+		border: 1px solid #E8E8E8;
+		border-radius: 0px;
+		padding: 0 10px 0 30px;
+		color: #666;
+		background: #fff;
+		width: 100%;
+		font-size: 15px;
+		height: 40px;
+	}
+	.add-update-preview .el-date-editor ::v-deep .el-input__inner[readonly="readonly"] {
+		border: 0;
+		cursor: not-allowed;
+		border-radius: 0px;
+		padding: 0 10px 0 30px;
+		color: #666;
+		background: none;
+		width: auto;
+		font-size: 15px;
+		height: 40px;
+	}
+	.add-update-preview .viewBtn {
+		border: 1px solid #E8E8E8;
+		cursor: pointer;
+		border-radius: 0px;
+		padding: 0 15px;
+		margin: 0 20px 0 0;
+		color: #666;
+		background: #fff;
+		width: auto;
+		font-size: 15px;
+		line-height: 34px;
+		height: 34px;
+		.iconfont {
+			margin: 0 2px;
+			color: #666;
+			font-size: 16px;
+			height: 34px;
+		}
+	}
+	.add-update-preview .viewBtn:hover {
+		opacity: 0.8;
+	}
+	.add-update-preview .downBtn {
+		border: 1px solid #E8E8E8;
+		cursor: pointer;
+		border-radius: 0px;
+		padding: 0 15px;
+		margin: 0 20px 0 0;
+		color: #666;
+		background: #fff;
+		width: auto;
+		font-size: 15px;
+		line-height: 34px;
+		height: 34px;
+		.iconfont {
+			margin: 0 2px;
+			color: #666;
+			font-size: 16px;
+			height: 34px;
+		}
+	}
+	.add-update-preview .downBtn:hover {
+		opacity: 0.8;
+	}
+	.add-update-preview .unBtn {
+		border: 0;
+		cursor: not-allowed;
+		border-radius: 4px;
+		padding: 0 0px;
+		margin: 0 20px 0 0;
+		outline: none;
+		color: #999;
+		background: none;
+		width: auto;
+		font-size: 15px;
+		line-height: 40px;
+		height: 40px;
+		.iconfont {
+			margin: 0 2px;
+			color: #fff;
+			display: none;
+			font-size: 14px;
+			height: 34px;
+		}
+	}
+	.add-update-preview .unBtn:hover {
+		opacity: 0.8;
+	}
+	.add-update-preview ::v-deep .el-upload--picture-card {
+		background: transparent;
+		border: 0;
+		border-radius: 0;
+		width: auto;
+		height: auto;
+		line-height: initial;
+		vertical-align: middle;
+	}
+	
+	.add-update-preview ::v-deep .upload .upload-img {
+		border: 1px solid #E8E8E8;
+		cursor: pointer;
+		border-radius: 0px;
+		color: #666;
+		background: #fff;
+		width: 90px;
+		font-size: 24px;
+		line-height: 60px;
+		text-align: center;
+		height: 60px;
+	}
+	
+	.add-update-preview ::v-deep .el-upload-list .el-upload-list__item {
+		border: 1px solid #E8E8E8;
+		cursor: pointer;
+		border-radius: 0px;
+		color: #666;
+		background: #fff;
+		width: 90px;
+		font-size: 24px;
+		line-height: 60px;
+		text-align: center;
+		height: 60px;
+	}
+	
+	.add-update-preview ::v-deep .el-upload .el-icon-plus {
+		border: 1px solid #E8E8E8;
+		cursor: pointer;
+		border-radius: 0px;
+		color: #666;
+		background: #fff;
+		width: 90px;
+		font-size: 24px;
+		line-height: 60px;
+		text-align: center;
+		height: 60px;
+	}
+	.add-update-preview ::v-deep .el-upload__tip {
+		color: #666;
+		font-size: 15px;
+	}
+	
+	.add-update-preview .el-textarea ::v-deep .el-textarea__inner {
+		border: 1px solid #E8E8E8;
+		border-radius: 0px;
+		padding: 12px;
+		color: #666;
+		background: #fff;
+		width: 100%;
+		font-size: 15px;
+		min-height: 150px;
+		height: auto;
+	}
+	.add-update-preview .el-textarea ::v-deep .el-textarea__inner[readonly="readonly"] {
+				border: 0;
+				cursor: not-allowed;
+				border-radius: 0px;
+				padding: 12px;
+				color: #666;
+				background: none;
+				width: auto;
+				font-size: 15px;
+				min-width: 400px;
+				height: auto;
+			}
+	.add-update-preview .el-form-item.btn {
+		padding: 0;
+		margin: 20px 0 0;
+		.btn1 {
+			border: 0px solid #ccc;
+			cursor: pointer;
+			border-radius: 6px;
+			padding: 0 10px;
+			margin: 0 10px 0 0;
+			color: #fff;
+			background: #0356bb;
+			width: auto;
+			font-size: 16px;
+			min-width: 110px;
+			height: 40px;
+			.iconfont {
+				margin: 0 2px;
+				color: #fff;
+				display: none;
+				font-size: 14px;
+				height: 40px;
+			}
+		}
+		.btn1:hover {
+			opacity: 0.8;
+		}
+		.btn2 {
+			border: 0px solid #ccc;
+			cursor: pointer;
+			border-radius: 6px;
+			padding: 0 10px;
+			margin: 0 10px 0 0;
+			color: #fff;
+			background: #39c9ee;
+			width: auto;
+			font-size: 16px;
+			min-width: 110px;
+			height: 40px;
+			.iconfont {
+				margin: 0 2px;
+				color: #fff;
+				display: none;
+				font-size: 14px;
+				height: 34px;
+			}
+		}
+		.btn2:hover {
+			opacity: 0.8;
+		}
+		.btn3 {
+			border: 0px solid #ccc;
+			cursor: pointer;
+			border-radius: 6px;
+			padding: 0 10px;
+			margin: 0 10px 0 0;
+			color: #fff;
+			background: #6ea0dc;
+			width: auto;
+			font-size: 16px;
+			min-width: 110px;
+			height: 40px;
+			.iconfont {
+				margin: 0 2px;
+				color: #fff;
+				display: none;
+				font-size: 14px;
+				height: 40px;
+			}
+		}
+		.btn3:hover {
+			opacity: 0.8;
+		}
+		.btn4 {
+			border: 0px solid #ccc;
+			cursor: pointer;
+			border-radius: 6px;
+			padding: 0 10px;
+			margin: 0 10px 0 0;
+			color: #fff;
+			background: #4abcff;
+			width: auto;
+			font-size: 16px;
+			min-width: 110px;
+			height: 40px;
+			.iconfont {
+				margin: 0 2px;
+				color: #fff;
+				display: none;
+				font-size: 14px;
+				height: 40px;
+			}
+		}
+		.btn4:hover {
+			opacity: 0.8;
+		}
+		.btn5 {
+			border: 0px solid #ccc;
+			cursor: pointer;
+			border-radius: 6px;
+			padding: 0 10px;
+			margin: 0 10px 0 0;
+			color: #fff;
+			background: #0977fd;
+			width: auto;
+			font-size: 16px;
+			min-width: 110px;
+			height: 40px;
+			.iconfont {
+				margin: 0 2px;
+				color: #fff;
+				display: none;
+				font-size: 14px;
+				height: 40px;
+			}
+		}
+		.btn5:hover {
+			opacity: 0.8;
+		}
+	}
+</style>

Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 1123 - 0
src/views/modules/weather/list.vue