Pārlūkot izejas kodu

孢子仪和性诱设备数据对接

yf_zd 5 gadi atpakaļ
vecāks
revīzija
2c1060525b

+ 1 - 1
bigdata2/config/index.js

@@ -48,7 +48,7 @@ module.exports = {
       },
       },
     },
     },
     // Various Dev Server settings
     // Various Dev Server settings
-    host: '192.168.1.7', // can be overwritten by process.env.HOST
+    host: '192.168.1.10', // can be overwritten by process.env.HOST
     port: 8000, // can be overwritten by process.env.PORT, if port is in use, a free one will be determined
     port: 8000, // can be overwritten by process.env.PORT, if port is in use, a free one will be determined
     autoOpenBrowser: false,
     autoOpenBrowser: false,
     errorOverlay: true,
     errorOverlay: true,

+ 263 - 147
bigdata2/src/pages/forecasting/bzy/Bzy.vue

@@ -3,91 +3,126 @@
 		<el-breadcrumb separator-class="el-icon-arrow-right">
 		<el-breadcrumb separator-class="el-icon-arrow-right">
 			<el-breadcrumb-item>孢子仪</el-breadcrumb-item>
 			<el-breadcrumb-item>孢子仪</el-breadcrumb-item>
 		</el-breadcrumb>
 		</el-breadcrumb>
-		<search-bar @fun="getDisplayType" @fun2="getIDName" @fun3="getIsOnline"></search-bar>
-		<template v-if="displayType==1">
-			<el-row :gutter="10">
-				<el-col :xs="24" :sm="24" :md="12" :lg="8" :xl="6" v-for="item in equipList" :key="item.id">
-					<el-card class="box-card">
-						<equip-item :is_online="item.device_status">
-							<span
-								slot="set"
-								v-show="userType==1"
-								class="superOperate el-icon-setting"
-								@click="equipOperation(item.device_id,item.d_id)"
-							></span>
-							<span slot="title">孢子仪</span>
-							<div slot="content" class="content">
-								<p>
-									<i class="iconfont icon-yonghu"></i>
-									设备ID:{{item.device_id.slice(-8)}}
-								</p>
-								<p>
-									<i class="iconfont icon-biaoqian"></i>
-									设备名称:{{item.device_name==""?"无":item.device_name}}
-								</p>
-								<p>
-									<i class="iconfont icon-diannao"></i>在线状态:
-									<span
-										:class="{red:item.device_status==0,green:item.device_status==1}"
-									>{{item.device_status==0?"离线":"在线"}}</span>
-								</p>
-								<p>
-									<i class="iconfont icon-shijian"></i>
-									最新上报时间 : {{item.status_time*1000 | formatTime}}
-								</p>
-								<p>
-									<i class="iconfont icon-dizhi"></i>载玻片、培养液更换时间
-									<span @click="setTime(item.d_id)" class="el-icon-edit"></span>
-								</p>
-								<p class="btns">
-									<i class="iconfont icon-yemiancaozuo"></i>
-									<el-button size="mini" type="info" @click="viewImage(item.device_id,item.d_id)">查看图片</el-button>
-									<el-button size="mini" type="warning" @click="equipSet(item.d_id)">设备控制</el-button>
-									<el-button size="mini" type="success" @click="simSet(item.d_id)">SIM卡</el-button>
-									<el-button size="mini" type="danger" @click="dataDetail(item.device_id,item.d_id)">数据详情</el-button>
-								</p>
-							</div>
-						</equip-item>
-					</el-card>
-				</el-col>
-			</el-row>
-		</template>
-		<template v-if="displayType==2">
-			<el-card class="box-card">
-				<el-table :data="equipList" stripe style="width: 100%">
-					<el-table-column prop="device_id" label="设备ID" width="180">
-						<template slot-scope="scope">{{scope.row.device_id.slice(-8)}}</template>
-					</el-table-column>
-					<el-table-column prop="device_name" label="设备名称" width="180">
-						<template slot-scope="scope">{{scope.row.device_name==""?"无":scope.row.device_name}}</template>
-					</el-table-column>
-					<el-table-column prop="device_status" label="在线状态">
-						<template slot-scope="scope">
-							<p style="color:#17bb89" v-if="scope.row.device_status==1">在线</p>
-							<p style="color:#eb6765" v-if="scope.row.device_status==0">离线</p>
-						</template>
-					</el-table-column>
-					<el-table-column prop="address" label="位置">
-						<template slot-scope="scope">{{scope.row.address==""?"无":scope.row.address}}</template>
-					</el-table-column>
-					<el-table-column prop="status_time" label="最新上报时间">
-						<template slot-scope="scope">{{scope.row.status_time*1000 | formatTime}}</template>
-					</el-table-column>
-					<el-table-column label="操作" width="400">
-						<template slot-scope="scope">
-							<el-button size="mini" type="info" @click="viewImage(scope.row.device_id,scope.row.d_id)">查看图片</el-button>
-							<el-button size="mini" type="warning" @click="equipSet(scope.row.d_id)">设备控制</el-button>
-							<el-button size="mini" type="success" @click="simSet(scope.row.d_id)">SIM卡</el-button>
-							<el-button
-								size="mini"
-								type="danger"
-								@click="dataDetail(scope.row.device_id,scope.row.d_id)"
-							>数据详情</el-button>
-						</template>
-					</el-table-column>
-				</el-table>
-			</el-card>
-		</template>
+		<div class="check-btns">
+			<div class="type-check">
+				<el-button
+				:type="displayType == '1'?'primary':'default'"
+				size="mini"
+				@click="checkType(1)"
+				>图表</el-button>
+				<el-button
+				:type="displayType == '2'?'primary':'default'"
+				size="mini"
+				@click="checkType(2)"
+				>列表</el-button>
+			</div>
+			<div class="search-box">
+				<el-input
+					placeholder="请输入内容"
+					size="mini"
+					clearable
+					v-model="searchVal"
+					suffix-icon="el-icon-search"
+					class="input-with-select"
+					@change="searchEquipList()"
+					>
+					<el-select
+						v-model="selectItem"
+						class="select02"
+						slot="prepend"
+						placeholder="请选择"
+						@change="selClear()">
+						<el-option label="设备ID" value="1"></el-option>
+						<el-option label="设备名" value="2"></el-option>
+					</el-select>
+				</el-input>
+			
+			</div>
+		</div>
+		<div v-loading="tableLoading">
+			<template v-if="displayType==1">
+				<el-row :gutter="10">
+					<el-col :xs="24" :sm="24" :md="12" :lg="8" :xl="6" v-for="item in equipList" :key="item.id">
+						<el-card class="box-card">
+							<equip-item :is_online="item.device_status">
+								<span slot="title">孢子仪</span>
+								<div slot="content" class="content">
+									<p>
+										<i class="iconfont icon-yonghu"></i>
+										设备ID:{{item.device_id.slice(-8)}}
+									</p>
+									<p>
+										<i class="iconfont icon-biaoqian"></i>
+										设备名称:{{item.device_name==""?"无":item.device_name}}
+									</p>
+									<p>
+										<i class="iconfont icon-diannao"></i>在线状态:
+										<span
+											:class="{red:item.device_status==0,green:item.device_status==1}"
+										>{{item.device_status==0?"离线":"在线"}}</span>
+									</p>
+									<p>
+										<i class="iconfont icon-shijian"></i>
+										最新上报时间 : {{item.status_time }}
+									</p>
+									<p>
+										<i class="iconfont icon-dizhi"></i>载玻片、培养液更换时间
+										<span @click="setTime(item.device_id)" class="el-icon-edit"></span>
+									</p>
+									<p class="btns">
+										<i class="iconfont icon-yemiancaozuo"></i>
+										<el-button size="mini" type="info" @click="viewImage(item.device_id,item.d_id)">查看图片</el-button>
+										<el-button size="mini" type="success" @click="equipSet(item.device_id)">设备控制</el-button>
+										<el-button size="mini" type="warning" @click="dataDetail(item.device_id,item.device_name)">数据详情</el-button>
+									</p>
+								</div>
+							</equip-item>
+						</el-card>
+					</el-col>
+				</el-row>
+			</template>
+			<template v-if="displayType==2">
+				<el-card class="box-card">
+					<el-table :data="equipList" stripe style="width: 100%">
+						<el-table-column prop="device_id" label="设备ID" width="180">
+							<template slot-scope="scope">{{scope.row.device_id.slice(-8)}}</template>
+						</el-table-column>
+						<el-table-column prop="device_name" label="设备名称" width="180">
+							<template slot-scope="scope">{{scope.row.device_name==""?"无":scope.row.device_name}}</template>
+						</el-table-column>
+						<el-table-column prop="device_status" label="在线状态">
+							<template slot-scope="scope">
+								<p style="color:#17bb89" v-if="scope.row.device_status==1">在线</p>
+								<p style="color:#eb6765" v-if="scope.row.device_status==0">离线</p>
+							</template>
+						</el-table-column>
+						<el-table-column prop="status_time" label="最新上报时间">
+							<template slot-scope="scope">{{scope.row.status_time }}</template>
+						</el-table-column>
+						<el-table-column label="操作" width="400">
+							<template slot-scope="scope">
+								<el-button size="mini" type="info" @click="viewImage(scope.row.device_id,scope.row.d_id)">查看图片</el-button>
+								<el-button size="mini" type="success" @click="equipSet(scope.row.device_id)">设备控制</el-button>
+								<el-button
+									size="mini"
+									type="warning"
+									@click="dataDetail(scope.row.device_id,scope.row.device_name)"
+								>数据详情</el-button>
+							</template>
+						</el-table-column>
+					</el-table>
+				</el-card>
+			</template>
+			<!-- 暂无数据 -->
+			<div class="expertDiagnosis_referral_units_not" v-if="equipList.length<=0 && displayType==1">
+				<img
+					src="@/assets/images/zanwu.png"
+					alt
+					class="expertDiagnosis_referral_units_notImg"
+				/>
+			</div>
+		</div>
+		
 		<el-pagination
 		<el-pagination
 			background
 			background
 			:page-size="8"
 			:page-size="8"
@@ -121,18 +156,18 @@
 			<el-form ref="equipContrlRef" :model="setFrom" label-width="160px">
 			<el-form ref="equipContrlRef" :model="setFrom" label-width="160px">
 				<el-form-item label="载玻片滴液时间: " prop="drop_time">
 				<el-form-item label="载玻片滴液时间: " prop="drop_time">
 					<el-select v-model="setFrom.drop_time">
 					<el-select v-model="setFrom.drop_time">
-						<el-option label="1" value="1"></el-option>
-						<el-option label="2" value="2"></el-option>
-						<el-option label="3" value="3"></el-option>
-						<el-option label="4" value="4"></el-option>
-						<el-option label="5" value="5"></el-option>
+						<el-option label="1" :value="1"></el-option>
+						<el-option label="2" :value="2"></el-option>
+						<el-option label="3" :value="3"></el-option>
+						<el-option label="4" :value="4"></el-option>
+						<el-option label="5" :value="5"></el-option>
 					</el-select>
 					</el-select>
 				</el-form-item>
 				</el-form-item>
 				<el-form-item label="图片上传分辨率: " prop="imgres">
 				<el-form-item label="图片上传分辨率: " prop="imgres">
 					<el-select v-model="setFrom.imgres">
 					<el-select v-model="setFrom.imgres">
-						<el-option label="高" value="0"></el-option>
-						<el-option label="中" value="1"></el-option>
-						<el-option label="低" value="2"></el-option>
+						<el-option label="高" :value="0"></el-option>
+						<el-option label="中" :value="1"></el-option>
+						<el-option label="低" :value="2"></el-option>
 					</el-select>
 					</el-select>
 				</el-form-item>
 				</el-form-item>
 				<el-form-item label="孢子培养时间(h): " prop="cul_time">
 				<el-form-item label="孢子培养时间(h): " prop="cul_time">
@@ -366,6 +401,7 @@ import EquipItem from '@/components/EquipItem'
 export default {
 export default {
 	data() {
 	data() {
 		return {
 		return {
+			tableLoading : false,
 			displayType: '1', //图表和表格切换
 			displayType: '1', //图表和表格切换
 			d_id: '',
 			d_id: '',
 			itemId: '', //当前点开的弹框设备ID
 			itemId: '', //当前点开的弹框设备ID
@@ -376,7 +412,6 @@ export default {
 			role: '',
 			role: '',
 			queryInfo: {
 			queryInfo: {
 				page: 1,
 				page: 1,
-				is_online: '', //筛选在线状态
 				f_id: '',
 				f_id: '',
 				ename: ''
 				ename: ''
 			},
 			},
@@ -437,6 +472,24 @@ export default {
 		}
 		}
 	},
 	},
 	methods: {
 	methods: {
+			checkType(i){
+                this.displayType=i;
+            },
+		// 搜索组合数据
+		searchEquipList() {
+			if (this.selectItem == 1) {
+				this.queryInfo.f_id = this.searchVal;
+			} else if (this.selectItem == 2) {
+				this.queryInfo.ename = this.searchVal;
+			}
+			this.getEquipList()
+		},
+		selClear() {
+			this.searchVal = "";
+			this.queryInfo.f_id = "";
+			this.queryInfo.ename = "";
+			this.getEquipList()
+		},
 		getIsOnline(data) {
 		getIsOnline(data) {
 			this.queryInfo.is_online = data
 			this.queryInfo.is_online = data
 			this.queryInfo.page = 1
 			this.queryInfo.page = 1
@@ -453,26 +506,40 @@ export default {
 		},
 		},
 		//获取设备列表
 		//获取设备列表
 		getEquipList() {
 		getEquipList() {
+			this.tableLoading = true;
 			this.$axios({
 			this.$axios({
 				method: 'POST',
 				method: 'POST',
-				url: '/api/api_gateway?method=forecast.worm_lamp.lamp_list',
+				url: '/api/equipmanage_bzy',
 				data: this.qs.stringify({
 				data: this.qs.stringify({
-					device_type_id: 7,
-					page_size: 8,
-					device_id: this.queryInfo.f_id,
-					device_name: this.queryInfo.ename,
+					req: 'filter',
+					ename: this.queryInfo.ename,
 					page: this.queryInfo.page,
 					page: this.queryInfo.page,
-					device_status: this.queryInfo.is_online
+					f_id:this.queryInfo.f_id,
 				})
 				})
 			}).then((res) => {
 			}).then((res) => {
-				if (res.data.message == '') {
-					this.equipList = res.data.data.data
-					this.totalNum = res.data.data.counts
+				this.tableLoading = false;
+				this.totalNum = res.data.nums
+				if (this.totalNum > 0) {
+					var dat = res.data.dat;
+					var arr = [];
+					for(var i = 0;i<dat.length;i++){
+						var bzy_status = eval('('+dat[i].bzy_status+')');
+						arr.push({
+							device_id: bzy_status.imei,
+							device_name: dat[i].equip_name,
+							device_status: parseInt(dat[i].is_online),
+							status_time:  dat[i].upl_time
+						})
+					}
+					this.equipList = arr
 					// this.role=res.data.role
 					// this.role=res.data.role
 				} else {
 				} else {
-					//  this.$message.error('获取数据失败!')
+					this.equipList = []
 				}
 				}
 				console.log(res)
 				console.log(res)
+			},error =>{
+				this.dataloading = false
+				this.$message.error('获取失败')
 			})
 			})
 		},
 		},
 		//载玻片、培养液更换时间配置
 		//载玻片、培养液更换时间配置
@@ -480,16 +547,17 @@ export default {
 			this.d_id = d_id
 			this.d_id = d_id
 			this.$axios({
 			this.$axios({
 				method: 'POST',
 				method: 'POST',
-				url: '/api/api_gateway?method=device.device_manage.get_spore_time',
+				url: '/api/equipmanage_bzy_detail',
 				data: this.qs.stringify({
 				data: this.qs.stringify({
-					device_type_id: 7,
-					d_id
+					id:d_id
 				})
 				})
 			}).then((res) => {
 			}).then((res) => {
-				if (res.data.message == '') {
-					let data = res.data.data
-					let glass_slide_time = data.glass_slide_time * 1000
-					let cultivate_time = data.cultivate_time * 1000
+				if (res.status == 200) {
+					let data = res.data
+					var glass = data.glass.split('#')
+					var liquid = data.liquid.split('#')
+					let glass_slide_time = new Date(glass[glass.length-1]).getTime()
+					let cultivate_time = new Date(liquid[liquid.length-1]).getTime()
 					this.time.time01 = glass_slide_time ? glass_slide_time : ''
 					this.time.time01 = glass_slide_time ? glass_slide_time : ''
 					this.time.time02 = cultivate_time ? cultivate_time : ''
 					this.time.time02 = cultivate_time ? cultivate_time : ''
 				}
 				}
@@ -498,21 +566,34 @@ export default {
 		},
 		},
 		//载玻片、培养液更换时间配置提交
 		//载玻片、培养液更换时间配置提交
 		setTimeSubm() {
 		setTimeSubm() {
-			let glass_slide_time = parseInt(
-				new Date(this.time.time01).getTime() / 1000
-			)
-			let cultivate_time = parseInt(new Date(this.time.time02).getTime() / 1000)
+			let glass_slide_time =  this.time.time01
+			let cultivate_time = this.time.time02 
 			this.$axios({
 			this.$axios({
 				method: 'POST',
 				method: 'POST',
-				url: '/api/api_gateway?method=device.device_manage.updata_spore_time',
+				url: '/api/bzy_mqtt',
 				data: this.qs.stringify({
 				data: this.qs.stringify({
-					device_type_id: 7,
-					d_id: this.d_id,
-					glass_slide_time,
-					cultivate_time
+					req: 'glass',
+					id: this.d_id,
+					glass: glass_slide_time,
 				})
 				})
 			}).then((res) => {
 			}).then((res) => {
-				if (res.data.message == '') {
+				if (res.data == '') {
+					this.$message.success('修改成功!')
+				} else {
+					this.$message.error(res.data.message)
+				}
+				this.setTimeDialogVisible = false
+			})
+			this.$axios({
+				method: 'POST',
+				url: '/api/bzy_mqtt',
+				data: this.qs.stringify({
+					req: 'liquid',
+					id: this.d_id,
+					liquid:cultivate_time
+				})
+			}).then((res) => {
+				if (res.data == '') {
 					this.$message.success('修改成功!')
 					this.$message.success('修改成功!')
 				} else {
 				} else {
 					this.$message.error(res.data.message)
 					this.$message.error(res.data.message)
@@ -523,70 +604,77 @@ export default {
 		equipSetSubm() {
 		equipSetSubm() {
 			this.setFrom.coll_time = []
 			this.setFrom.coll_time = []
 			if (this.coll_time.time01 && this.coll_time.time02) {
 			if (this.coll_time.time01 && this.coll_time.time02) {
+				var time01 = this.coll_time.time01.slice(0,2)
 				this.setFrom.coll_time.push(
 				this.setFrom.coll_time.push(
-					`${this.coll_time.time01}-${this.coll_time.time02}`
+					`${this.coll_time.time01.split(':')[0]}-${this.coll_time.time02.split(':')[0]}`
 				)
 				)
 			}
 			}
 			if (this.coll_time.time03 && this.coll_time.time04) {
 			if (this.coll_time.time03 && this.coll_time.time04) {
 				this.setFrom.coll_time.push(
 				this.setFrom.coll_time.push(
-					`${this.coll_time.time03}-${this.coll_time.time04}`
+					`${this.coll_time.time03.split(':')[0]}-${this.coll_time.time04.split(':')[0]}`
 				)
 				)
 			}
 			}
 			if (this.coll_time.time05 && this.coll_time.time06) {
 			if (this.coll_time.time05 && this.coll_time.time06) {
 				this.setFrom.coll_time.push(
 				this.setFrom.coll_time.push(
-					`${this.coll_time.time05}-${this.coll_time.time06}`
+					`${this.coll_time.time05.split(':')[0]}-${this.coll_time.time06.split(':')[0]}`
 				)
 				)
 			}
 			}
+			console.log(this.setFrom.coll_time)
+			var colltime = JSON.stringify(this.setFrom.coll_time)
 			this.$axios({
 			this.$axios({
 				method: 'POST',
 				method: 'POST',
-				url: '/api/api_gateway?method=forecast.send_control.device_control',
+				url: '/api/bzy_mqtt',
 				data: this.qs.stringify({
 				data: this.qs.stringify({
-					device_type_id: 7,
-					d_id: this.d_id,
-					config: JSON.stringify(this.setFrom)
+					req: 'set',
+					id: this.itemId,
+					wind: this.setFrom.wind_sw,
+					drop: this.setFrom.drop_time,
+					culTime: this.setFrom.cul_time,
+					stemp: this.setFrom.set_stemp,
+					takt: this.setFrom.datt,
+					colltime: colltime,
 				})
 				})
 			}).then((res) => {
 			}).then((res) => {
-				if (res.data.data) {
+				if (res.data == 0) {
 					this.$message.success('设备控制修改成功')
 					this.$message.success('设备控制修改成功')
+					this.setDialogVisible = false
 				} else {
 				} else {
 					this.$message.error('设备控制修改失败')
 					this.$message.error('设备控制修改失败')
 				}
 				}
-				this.setDialogVisible = false
 			})
 			})
 		},
 		},
 		//数据详情
 		//数据详情
-		dataDetail(e_id, d_id) {
+		dataDetail(e_id, name) {
 			this.itemId = e_id
 			this.itemId = e_id
-			this.$router.push(`/index/dataDetail/${e_id}/${d_id}`)
+			this.$router.push({path:'/index/dataDetail/' + e_id,query: {name:name} })
 		},
 		},
 		viewImage(id,d_id) {
 		viewImage(id,d_id) {
 			this.itemId = id
 			this.itemId = id
-			this.$router.push({path:'/index/bzyPhotos/' + id,query: {d_id:d_id} })
+			this.$router.push({path:'/index/bzyPhotos/' + id,query: {d_id:id} })
 		},
 		},
 		equipSet(d_id) {
 		equipSet(d_id) {
-			this.d_id = d_id
+			this.itemId = d_id
 			this.$axios({
 			this.$axios({
 				method: 'POST',
 				method: 'POST',
-				url: '/api/api_gateway?method=forecast.send_control.device_control_info',
-				data: this.qs.stringify({ d_id, get_type: 1 })
+				url: '/api/equipmanage_bzy_detail',
+				data: this.qs.stringify({ id:d_id })
 			}).then((res) => {
 			}).then((res) => {
-				if (Object.keys(res.data.data).length > 0) {
-					let data = res.data.data
-					this.setFrom = data
-					let { coll_time } = this.setFrom
+				if (res.status == 200) {
+					var bzy_status = eval('('+res.data.bzy_status+')');
+					this.setFrom = bzy_status
+					let coll_time = this.setFrom.coll_time
 					for (let i in coll_time) {
 					for (let i in coll_time) {
 						if (i == 0) {
 						if (i == 0) {
-							this.coll_time.time01 = coll_time[i].split('-')[0]
-							this.coll_time.time02 = coll_time[i].split('-')[1]
+							this.coll_time.time01 = coll_time[i].split('-')[0]+':00'
+							this.coll_time.time02 = coll_time[i].split('-')[1]+':00'
 						} else if (i == 1) {
 						} else if (i == 1) {
-							this.coll_time.time03 = coll_time[i].split('-')[0]
-							this.coll_time.time04 = coll_time[i].split('-')[1]
+							this.coll_time.time03 = coll_time[i].split('-')[0]+':00'
+							this.coll_time.time04 = coll_time[i].split('-')[1]+':00'
 						} else if (i == 2) {
 						} else if (i == 2) {
-							this.coll_time.time05 = coll_time[i].split('-')[0]
-							this.coll_time.time06 = coll_time[i].split('-')[1]
+							this.coll_time.time05 = coll_time[i].split('-')[0]+':00'
+							this.coll_time.time06 = coll_time[i].split('-')[1]+':00'
 						}
 						}
 					}
 					}
-					console.log(this.coll_time)
 				}
 				}
 				this.setDialogVisible = true
 				this.setDialogVisible = true
 			})
 			})
@@ -760,4 +848,32 @@ export default {
 .green {
 .green {
 	color: rgb(23, 187, 137);
 	color: rgb(23, 187, 137);
 }
 }
+.check-btns{
+    display:flex;
+    justify-content: space-between;
+    margin-bottom:20px;
+    align-items: center;
+    .search-box{
+         text-align: right;
+        .el-input {
+            width: 400px;
+            vertical-align: middle;
+        }
+        .select01 {
+            width: 200px;
+            vertical-align: middle;
+        }
+       /deep/.select02 {
+            width: 86px;
+        }
+        .input-with-select{
+            width: 260px;
+        }
+    }
+}
+// 暂无数据
+.expertDiagnosis_referral_units_not {
+	width: 272px;
+	margin: 0 auto;
+}
 </style>
 </style>

+ 31 - 38
bigdata2/src/pages/forecasting/bzy/BzyPhotos.vue

@@ -9,43 +9,34 @@
 			<div class="type-check">
 			<div class="type-check">
 				<el-button type="primary" size="mini" @click="equipStatusCheck('0')">拍照</el-button>
 				<el-button type="primary" size="mini" @click="equipStatusCheck('0')">拍照</el-button>
 				<el-button type="primary" size="mini" @click="equipStatusCheck('1')">刷新</el-button>
 				<el-button type="primary" size="mini" @click="equipStatusCheck('1')">刷新</el-button>
-				<template v-if="userType==1">
+				<!-- <template v-if="userType==1">
 					<el-button v-if="delBtnState" type="primary" size="mini" @click="equipStatusCheck('2')">批量删除</el-button>
 					<el-button v-if="delBtnState" type="primary" size="mini" @click="equipStatusCheck('2')">批量删除</el-button>
 					<el-button v-if="!delBtnState" type="primary" size="mini" @click="equipStatusCheck('3')">删除</el-button>
 					<el-button v-if="!delBtnState" type="primary" size="mini" @click="equipStatusCheck('3')">删除</el-button>
 					<el-button v-if="!delBtnState" size="mini" @click="equipStatusCheck('4')">取消</el-button>
 					<el-button v-if="!delBtnState" size="mini" @click="equipStatusCheck('4')">取消</el-button>
-					<el-button type="primary" size="mini" @click="equipStatusCheck('5')">一键删除</el-button>
-				</template>
-			</div>
-			<div class="search-box">
-				<el-date-picker
-					size="mini"
-					v-model="timeRange"
-					type="daterange"
-					range-separator="至"
-					clearable
-					start-placeholder="开始日期"
-					end-placeholder="结束日期"
-					@change="DateChange"
-				></el-date-picker>
+				</template> -->
 			</div>
 			</div>
 		</div>
 		</div>
 		<el-row :gutter="30" v-viewer v-if="photoList.length>0">
 		<el-row :gutter="30" v-viewer v-if="photoList.length>0">
 			<el-col :xs="24" :sm="24" :md="12" :lg="8" :xl="6" v-for="item in photoList" :key="item.addr">
 			<el-col :xs="24" :sm="24" :md="12" :lg="8" :xl="6" v-for="item in photoList" :key="item.addr">
 				<div class="photoItem">
 				<div class="photoItem">
 					<div class="photoInfo">
 					<div class="photoInfo">
-						<span>{{item.addtime*1000 | formatTime}}</span>
+						<span>{{item.upl_time}}</span>
 						<template v-if="userType==1">
 						<template v-if="userType==1">
 							<i class="iconfont icon-shanchu" v-show="delBtnState" @click="delectImg(item.addr)"></i>
 							<i class="iconfont icon-shanchu" v-show="delBtnState" @click="delectImg(item.addr)"></i>
 							<el-checkbox v-show="!delBtnState" v-model="item.checked"></el-checkbox>
 							<el-checkbox v-show="!delBtnState" v-model="item.checked"></el-checkbox>
 						</template>
 						</template>
 					</div>
 					</div>
 					<div class="photoImg">
 					<div class="photoImg">
-						<img :src="'/api/'+item.addr" />
+						<template v-if="item.addr.slice(0,4) == 'http'">
+							<img :src="item.addr" @error="errImg" alt />
+						</template>
+						<template v-else>
+							<img :src="'/api/' + item.addr" @error="errImg" alt />
+						</template>
 					</div>
 					</div>
 					<div class="photoCtrl">
 					<div class="photoCtrl">
-						<div @click="viewDes()">
-							<i class="iconfont icon-wendang"></i>
-							查看描述
+						<div >
+							{{item.upl_time}}
 						</div>
 						</div>
 					</div>
 					</div>
 				</div>
 				</div>
@@ -95,6 +86,10 @@ export default {
 		}
 		}
 	},
 	},
 	methods: {
 	methods: {
+		// 列表图片加载失败
+		errImg(e) {
+			e.target.src = require('@/assets/images/noData.jpg')
+		},
 		equipStatusCheck(flag) {
 		equipStatusCheck(flag) {
 			this.active = flag
 			this.active = flag
 			if (flag == 0) {
 			if (flag == 0) {
@@ -136,14 +131,15 @@ export default {
 			this.$axios({
 			this.$axios({
 				method: 'POST',
 				method: 'POST',
 				url:
 				url:
-					'/api/api_gateway?method=forecast.send_control.admin_device_control',
+					'/api/bzy_mqtt',
 				data: this.qs.stringify({
 				data: this.qs.stringify({
-					cmd,
-					device_type_id: 7,
-					d_id: this.$route.query.d_id
+					req: 'ctrl',
+					topicid: this.$route.query.d_id,
+					cmd: 'ctrl',
+					type: 'takephoto',
 				})
 				})
 			}).then((res) => {
 			}).then((res) => {
-				if (res.data.message == '') {
+				if (res.data == 0) {
 					this.$message.success('指令下发成功!')
 					this.$message.success('指令下发成功!')
 				}
 				}
 			})
 			})
@@ -151,23 +147,20 @@ export default {
 		getPhoteList() {
 		getPhoteList() {
 			this.$axios({
 			this.$axios({
 				method: 'POST',
 				method: 'POST',
-				url: '/api/api_gateway?method=forecast.forecast_system.equip_photo',
+				url: '/api/app_bzy_img',
 				data: this.qs.stringify({
 				data: this.qs.stringify({
-					device_id: this.id,
-					ret: 'list',
+					equip_id: this.id,
 					page: this.queryInfo.page,
 					page: this.queryInfo.page,
-					time_begin: this.queryInfo.begin,
-					time_end: this.queryInfo.end
 				})
 				})
 			}).then((res) => {
 			}).then((res) => {
-				if (res.data.message == '') {
-					let data = res.data.data.data
+				if (res.status == 200) {
+					let data = res.data.img
+					console.log(this.photoList)
 					this.photoList = data.map((item) => {
 					this.photoList = data.map((item) => {
 						item.checked = false
 						item.checked = false
 						return item
 						return item
 					})
 					})
-					this.totalNum = res.data.data.num
-					this.$message.success('请求最新图片成功!')
+					this.totalNum = res.data.nums
 				}
 				}
 			})
 			})
 		},
 		},
@@ -214,13 +207,13 @@ export default {
 					this.$axios({
 					this.$axios({
 						method: 'POST',
 						method: 'POST',
 						url:
 						url:
-							'/api/api_gateway?method=forecast.forecast_system.equip_photo_del',
+							'/api/bzy_delete_img',
 						data: this.qs.stringify({
 						data: this.qs.stringify({
-							device_id: '300142',
-							addrlist: JSON.stringify(addrlist)
+							imei: '300142',
+							addr: addrlist[0]
 						})
 						})
 					}).then((res) => {
 					}).then((res) => {
-						if (res.data.message == '') {
+						if (res.data  == 0) {
 							this.$message({
 							this.$message({
 								type: 'success',
 								type: 'success',
 								message: '删除成功!'
 								message: '删除成功!'

+ 50 - 39
bigdata2/src/pages/forecasting/bzy/DataDetail.vue

@@ -9,9 +9,7 @@
 			<div class="detail">
 			<div class="detail">
 				<i></i>
 				<i></i>
 				<span>设备ID:{{id}}</span>
 				<span>设备ID:{{id}}</span>
-				<span>设备名称:无</span>
-				<span>位置:黑龙江省,鸡西市,鸡东县</span>
-				<span>已培养时间(h):0</span>
+				<span>设备名称:{{name||'无'}}</span>
 			</div>
 			</div>
 			<DateSearch @dateChange="dateChange"></DateSearch>
 			<DateSearch @dateChange="dateChange"></DateSearch>
 		</div>
 		</div>
@@ -22,20 +20,21 @@
 			<el-col :md="24" :lg="12">
 			<el-col :md="24" :lg="12">
 				<el-card class="box-card">
 				<el-card class="box-card">
 					<div class="charts">
 					<div class="charts">
-						<highcharts :options="option1"></highcharts>
+						<highcharts :options="option1" v-if="Object.keys(option1).length>0"></highcharts>
+						<div v-else style="text-align:center;font-size:20px;line-height:360px">暂无数据</div>
 					</div>
 					</div>
 				</el-card>
 				</el-card>
 			</el-col>
 			</el-col>
 			<el-col :md="24" :lg="12">
 			<el-col :md="24" :lg="12">
 				<el-card class="box-card">
 				<el-card class="box-card">
 					<div class="charts">
 					<div class="charts">
-						<highcharts :options="option2"></highcharts>
+						<highcharts :options="option2" v-if="Object.keys(option2).length>0"></highcharts>
+						<div v-else style="text-align:center;font-size:20px;line-height:360px">暂无数据</div>
 					</div>
 					</div>
 				</el-card>
 				</el-card>
 			</el-col>
 			</el-col>
 		</el-row>
 		</el-row>
 		<div class="dataTableSearch">
 		<div class="dataTableSearch">
-			<el-button type="primary" size="mini">导出</el-button>
 		</div>
 		</div>
 		<el-card class="box-card">
 		<el-card class="box-card">
 			<el-table :data="tableData" stripe style="width: 100%">
 			<el-table :data="tableData" stripe style="width: 100%">
@@ -67,6 +66,7 @@ export default {
 	data() {
 	data() {
 		return {
 		return {
 			id: this.$route.params.e_id,
 			id: this.$route.params.e_id,
+			name: this.$route.query.name,
 			option1: {},
 			option1: {},
 			option2: {},
 			option2: {},
 			btnSelected: '',
 			btnSelected: '',
@@ -91,7 +91,7 @@ export default {
 				begin: '',
 				begin: '',
 				end: '',
 				end: '',
 				e_id: this.$route.params.e_id,
 				e_id: this.$route.params.e_id,
-				d_id: this.$route.params.d_id,
+				name: this.$route.query.name,
 				page: 1
 				page: 1
 			},
 			},
 			// 表格数据
 			// 表格数据
@@ -100,23 +100,23 @@ export default {
 		}
 		}
 	},
 	},
 	mounted() {
 	mounted() {
-		this.getChartDataList()
-		this.getHisDataList()
+		// this.getChartDataList()
+		// this.getHisDataList()
 	},
 	},
 	methods: {
 	methods: {
 		//获取折线数据
 		//获取折线数据
 		getChartDataList() {
 		getChartDataList() {
 			this.$axios({
 			this.$axios({
 				method: 'POST',
 				method: 'POST',
-				url: '/api/api_gateway?method=forecast.worm_lamp.device_polyline_data',
+				url: '/api/bzy_report_detail_chart',
 				data: this.qs.stringify({
 				data: this.qs.stringify({
-					device_type_id: 7,
-					device_id: this.queryInfo.e_id,
-					start_time: this.queryInfo.begin,
-					end_time: this.queryInfo.end
+					req: 'filter',
+					id: this.queryInfo.e_id,
+					begin: this.queryInfo.begin,
+					end: this.queryInfo.end
 				})
 				})
 			}).then((res) => {
 			}).then((res) => {
-				if (res.data.message == '') {
+				if (res.data.length) {
 					var ChartData = [
 					var ChartData = [
 						{
 						{
 							name: '温度(°C)',
 							name: '温度(°C)',
@@ -131,19 +131,19 @@ export default {
 							dat: []
 							dat: []
 						}
 						}
 					]
 					]
-					var data = res.data.data
+					var data = res.data
 					for (let item of data) {
 					for (let item of data) {
 						ChartData[0].dat.unshift([
 						ChartData[0].dat.unshift([
-							item.addtime * 1000 + 8 * 3600000,
-							item.temperature
+							this.returnTime(item.tim),
+							parseFloat(item.at)
 						])
 						])
 						ChartData[1].dat.unshift([
 						ChartData[1].dat.unshift([
-							item.addtime * 1000 + 8 * 3600000,
-							item.humidity
+							this.returnTime(item.tim),
+							parseFloat(item.ah)
 						])
 						])
 						ChartData[2].dat.unshift([
 						ChartData[2].dat.unshift([
-							item.addtime * 1000 + 8 * 3600000,
-							item.others
+							this.returnTime(item.tim),
+							parseFloat(item.pre_temp)
 						])
 						])
 					}
 					}
 					this.option1 = {
 					this.option1 = {
@@ -302,30 +302,40 @@ export default {
 							]
 							]
 						}
 						}
 					}
 					}
+				}else{
+					this.option1 = {}
+					this.option2 = {}
 				}
 				}
 			})
 			})
 		},
 		},
+		// 返回时间戳
+		returnTime(time) {
+			var thisTime = time.replace(/-/g, '/');
+			var time = new Date(thisTime);
+			var timestamp = time.getTime() + 8 * 3600000;
+			return timestamp;
+		},
 		//获取表格数据
 		//获取表格数据
 		getHisDataList() {
 		getHisDataList() {
 			this.$axios({
 			this.$axios({
 				method: 'POST',
 				method: 'POST',
-				url: '/api/api_gateway?method=forecast.worm_lamp.device_history_data',
+				url: '/api/bzy_report_detail',
 				data: this.qs.stringify({
 				data: this.qs.stringify({
-					device_type_id: 7,
-					device_id: this.queryInfo.e_id,
-					start_time: this.queryInfo.begin,
-					end_time: this.queryInfo.end,
+					req: 'filter',
+					id: this.queryInfo.e_id,
+					begin: this.queryInfo.begin,
+					end: this.queryInfo.end,
 					page: this.queryInfo.page
 					page: this.queryInfo.page
 				})
 				})
 			}).then((res) => {
 			}).then((res) => {
-				if (res.data.message == '') {
-					this.total = res.data.data.counts
-					var data = res.data.data.data
+				this.total = res.data.nums
+				if (this.total>0) {
+					var data = res.data.dat
 					if (data.length > 0) {
 					if (data.length > 0) {
 						this.tableData = []
 						this.tableData = []
 						for (var i = 0; i < data.length; i++) {
 						for (var i = 0; i < data.length; i++) {
-							var dht = data[i].d_h_t
-							dht.addtime = this.formatTime(dht.addtime * 1000)
+							var dht = eval('('+data[i].bzy_data+')');
+							dht.addtime = data[i].upl_time
 							dht.on_off = dht.on_off == 0 ? '关' : '开'
 							dht.on_off = dht.on_off == 0 ? '关' : '开'
 							dht.bat_sta = dht.bat_sta == 0 ? '正常' : '电量过低'
 							dht.bat_sta = dht.bat_sta == 0 ? '正常' : '电量过低'
 							dht.rps = dht.rps == 0 ? '正常' : '雨控'
 							dht.rps = dht.rps == 0 ? '正常' : '雨控'
@@ -348,13 +358,15 @@ export default {
 							this.tableData.push(dht)
 							this.tableData.push(dht)
 						}
 						}
 					}
 					}
+				}else{
+					this.tableData = []
 				}
 				}
 			})
 			})
 		},
 		},
 		dateChange(data) {
 		dateChange(data) {
 			this.queryInfo.page = 1
 			this.queryInfo.page = 1
-			this.queryInfo.begin = data.begin
-			this.queryInfo.end = data.end
+			this.queryInfo.begin = new Date(data.begin*1000).toLocaleDateString().replace(/\//g,'-'); 
+			this.queryInfo.end = new Date(data.end*1000).toLocaleDateString().replace(/\//g,'-'); 
 			this.getHisDataList()
 			this.getHisDataList()
 			this.getChartDataList()
 			this.getChartDataList()
 		},
 		},
@@ -370,14 +382,13 @@ export default {
 		refresh() {
 		refresh() {
 			this.$axios({
 			this.$axios({
 				method: 'POST',
 				method: 'POST',
-				url: '/api/api_gateway?method=forecast.send_control.get_device_config',
+				url: '/api/bzy_mqtt',
 				data: this.qs.stringify({
 				data: this.qs.stringify({
-					device_type_id: 7,
-					d_id: this.queryInfo.d_id,
-					control_type: 'data'
+					req: 'read',
+					topicid: this.queryInfo.e_id,
 				})
 				})
 			}).then((res) => {
 			}).then((res) => {
-				if (res.data.data) {
+				if (res.data == 0) {
 					this.$message.success('刷新成功')
 					this.$message.success('刷新成功')
 				} else {
 				} else {
 					this.$message.err('刷新失败')
 					this.$message.err('刷新失败')

+ 185 - 190
bigdata2/src/pages/forecasting/xycb/xycb.vue

@@ -4,164 +4,126 @@
 			<el-breadcrumb-item>性诱测报</el-breadcrumb-item>
 			<el-breadcrumb-item>性诱测报</el-breadcrumb-item>
 		</el-breadcrumb>
 		</el-breadcrumb>
 		<SearchBar @fun="getDisplayType" @fun2="getIDName" @fun3="getIsOnline">
 		<SearchBar @fun="getDisplayType" @fun2="getIDName" @fun3="getIsOnline">
-			<template slot="search-box">
-				<template v-if="role == 'admin'">
-					<el-select
-						v-model="queryInfo.etype"
-						class="select01"
-						clearable
-						size="mini"
-						placeholder="请选择设备型号"
-						@change="deviceModel()"
-					>
-						<el-option label="全部" value></el-option>
-						<el-option label="I型" value="1"></el-option>
-						<el-option label="II型" value="2"></el-option>
-					</el-select>
-				</template>
-			</template>
 		</SearchBar>
 		</SearchBar>
-		<template v-if="displayType == 1">
-			<el-row :gutter="10">
-				<el-col
-					:xs="24"
-					:sm="24"
-					:md="12"
-					:lg="8"
-					:xl="6"
-					v-for="item in equipList"
-					:key="item.imei"
-				>
-					<el-card class="box-card">
-						<equip-item :is_online="item.is_online">
-							<span
-								slot="set"
-								v-show="userType == 1"
-								class="superOperate el-icon-setting"
-								@click="equipOperation(item.etype, item.d_id)"
-							></span>
-							<span slot="title">性诱测报</span>
-							<div slot="content" class="content">
-								<p>
-									<i class="iconfont icon-yonghu"></i>
-									设备ID:{{ item.imei}}
-								</p>
-								<p>
-									<i class="iconfont icon-biaoqian"></i>
-									设备名称:{{ item.equip_name||'无'}}
-								</p>
-								<p>
-									<i class="iconfont icon-diannao"></i>在线状态:
-									<span
-										:class="{
-											red: item.is_online  == 0,
-											green: item.is_online  == 1
-										}"
-										>{{ item.is_online == 0 ? '离线' : '在线' }}</span
-									>
-								</p>
-								<p>
-									<i class="iconfont icon-shijian"></i>
-									最新上报时间 : {{item.upl_time}}
-								</p>
-								<p class="btns">
-									<i class="iconfont icon-yemiancaozuo"></i>
-									<template v-if="item.etype == 2">
+		<div v-loading="tableLoading">
+			<template v-if="displayType == 1">
+				<el-row :gutter="10">
+					<el-col
+						:xs="24"
+						:sm="24"
+						:md="12"
+						:lg="8"
+						:xl="6"
+						v-for="item in equipList"
+						:key="item.imei"
+					>
+						<el-card class="box-card">
+							<equip-item :is_online="item.is_online">
+								<span slot="title">性诱测报</span>
+								<div slot="content" class="content">
+									<p>
+										<i class="iconfont icon-yonghu"></i>
+										设备ID:{{ item.imei}}
+									</p>
+									<p>
+										<i class="iconfont icon-biaoqian"></i>
+										设备名称:{{ item.equip_name||'无'}}
+									</p>
+									<p>
+										<i class="iconfont icon-diannao"></i>在线状态:
+										<span
+											:class="{
+												red: item.is_online  == 0,
+												green: item.is_online  == 1
+											}"
+											>{{ item.is_online == 0 ? '离线' : '在线' }}</span
+										>
+									</p>
+									<p>
+										<i class="iconfont icon-shijian"></i>
+										最新上报时间 : {{item.upl_time}}
+									</p>
+									<p class="btns">
+										<i class="iconfont icon-yemiancaozuo"></i>
 										<el-button
 										<el-button
 											size="mini"
 											size="mini"
-											type="info"
-											@click="viewImage(item.device_id, item.d_id)"
-											>查看图片</el-button
+											type="success"
+											@click="EquipControl(item.imei)"
+											>设备控制</el-button
 										>
 										>
-									</template>
-									<el-button
-										size="mini"
-										type="warning"
-										@click="EquipControl(item.etype, item.d_id)"
-										>设备控制</el-button
-									>
-									<el-button
-										size="mini"
-										type="success"
-										@click="lookSIMCode(item.d_id)"
-										>SIM卡</el-button
-									>
-									<el-button
-										size="mini"
-										type="danger"
-										@click="dataDetails(item.device_id, item.d_id, item.etype)"
-										>数据详情</el-button
-									>
+										<el-button
+											size="mini"
+											type="warning"
+											@click="dataDetails(item.imei, item.equip_name)"
+											>数据详情</el-button
+										>
+									</p>
+								</div>
+							</equip-item>
+						</el-card>
+					</el-col>
+				</el-row>
+			</template>
+			<template v-if="displayType == 2">
+				<el-card class="box-card">
+					<el-table :data="equipList" stripe style="width: 100%">
+						<el-table-column prop="imei" label="设备ID" width="180">
+							<template slot-scope="scope">{{
+								scope.row.imei
+							}}</template>
+						</el-table-column>
+						<el-table-column prop="equip_name" label="设备名称" width="180">
+							<template slot-scope="scope">{{
+								scope.row.equip_name || '无'
+							}}</template>
+						</el-table-column>
+						<el-table-column prop="is_online" label="在线状态">
+							<template slot-scope="scope">
+								<p style="color: #17bb89" v-if="scope.row.is_online == 1">
+									在线
 								</p>
 								</p>
-							</div>
-						</equip-item>
-					</el-card>
-				</el-col>
-			</el-row>
-		</template>
-		<template v-if="displayType == 2">
-			<el-card class="box-card">
-				<el-table :data="equipList" stripe style="width: 100%">
-					<el-table-column prop="imei" label="设备ID" width="180">
-						<template slot-scope="scope">{{
-							scope.row.imei
-						}}</template>
-					</el-table-column>
-					<el-table-column prop="equip_name" label="设备名称" width="180">
-						<template slot-scope="scope">{{
-							scope.row.equip_name || '无'
-						}}</template>
-					</el-table-column>
-					<el-table-column prop="is_online" label="在线状态">
-						<template slot-scope="scope">
-							<p style="color: #17bb89" v-if="scope.row.is_online == 1">
-								在线
-							</p>
-							<p style="color: #eb6765" v-if="scope.row.is_online == 0">
-								离线
-							</p>
-						</template>
-					</el-table-column>
-					<el-table-column prop="upl_time" label="最新上报时间">
-						<template slot-scope="scope">{{
-							scope.row.upl_time
-						}}</template>
-					</el-table-column>
-					<el-table-column label="操作" width="400">
-						<template slot-scope="scope">
-							<el-button
-								size="mini"
-								type="info"
-								@click="viewImage(scope.row.imei, scope.row.d_id)"
-								>查看图片</el-button
-							>
-							<el-button
-								size="mini"
-								type="warning"
-								@click="EquipControl(scope.row.etype, scope.row.d_id)"
-								>设备控制</el-button
-							>
-							<el-button
-								size="mini"
-								type="success"
-								@click="lookSIMCode(scope.row.d_id)"
-								>SIM卡</el-button
-							>
-							<el-button
-								size="mini"
-								type="danger"
-								@click="
-									dataDetails(scope.row.device_id, scope.row.d_id, scope.etype)
-								"
-								>数据详情</el-button
-							>
-						</template>
-					</el-table-column>
-				</el-table>
-			</el-card>
-		</template>
-		{{totalNum}}
+								<p style="color: #eb6765" v-if="scope.row.is_online == 0">
+									离线
+								</p>
+							</template>
+						</el-table-column>
+						<el-table-column prop="upl_time" label="最新上报时间">
+							<template slot-scope="scope">{{
+								scope.row.upl_time
+							}}</template>
+						</el-table-column>
+						<el-table-column label="操作" width="400">
+							<template slot-scope="scope">
+								<el-button
+									size="mini"
+									type="success"
+									@click="EquipControl(scope.row.imei)"
+									>设备控制</el-button
+								>
+								<el-button
+									size="mini"
+									type="warning"
+									@click="
+										dataDetails(scope.row.imei, scope.row.equip_name)
+									"
+									>数据详情</el-button
+								>
+							</template>
+						</el-table-column>
+					</el-table>
+				</el-card>
+			</template>
+			<!-- 暂无数据 -->
+			<div class="expertDiagnosis_referral_units_not" v-if="equipList.length<=0 && displayType==1">
+				<img
+					src="@/assets/images/zanwu.png"
+					alt
+					class="expertDiagnosis_referral_units_notImg"
+				/>
+			</div>
+		</div>
 		<el-pagination
 		<el-pagination
+			v-if="equipList.length>0"
 			background
 			background
 			:page-size="8"
 			:page-size="8"
 			layout="prev, pager, next"
 			layout="prev, pager, next"
@@ -336,12 +298,20 @@
 							></el-time-select>
 							></el-time-select>
 						</div>
 						</div>
 					</el-form-item>
 					</el-form-item>
+					<el-form-item label="设备开关:" prop="ds">
+						<el-select v-model="equipContrlForm1.ds" @change="wsChange()">
+							<el-option label="关机" :value="0"></el-option>
+							<el-option label="开机" :value="1"></el-option>
+						</el-select>
+					</el-form-item>
+					
 					<el-form-item label="数据上传时间间隔:" prop="dat_f">
 					<el-form-item label="数据上传时间间隔:" prop="dat_f">
 						<div class="sliderParent">
 						<div class="sliderParent">
 							<div class="block">
 							<div class="block">
 								<el-slider
 								<el-slider
-									:min="1"
-									:max="10"
+									:min="10"
+									:step="10"
+									:max="60"
 									v-model="equipContrlForm1.dat_f"
 									v-model="equipContrlForm1.dat_f"
 									show-input
 									show-input
 								></el-slider>
 								></el-slider>
@@ -413,6 +383,8 @@ export default {
 		return {
 		return {
 			//图表和表格切换
 			//图表和表格切换
 			displayType: '1',
 			displayType: '1',
+			// 设备加载loading
+			tableLoading : false,
 			//设备列表
 			//设备列表
 			equipList: [],
 			equipList: [],
 			role: 'admin',
 			role: 'admin',
@@ -442,6 +414,7 @@ export default {
 			},
 			},
 			//设备控制I 型
 			//设备控制I 型
 			equipContrlForm1: {
 			equipContrlForm1: {
+				ds: '', 
 				st: '', //时控开始时间
 				st: '', //时控开始时间
 				et: '', //时控结束时间
 				et: '', //时控结束时间
 				dat_f: null //数据上传时间间隔
 				dat_f: null //数据上传时间间隔
@@ -499,23 +472,19 @@ export default {
 		},
 		},
 		//获取设备列表
 		//获取设备列表
 		getEquipList() {
 		getEquipList() {
+			this.tableLoading = true;
 			this.$axios({
 			this.$axios({
 				method: 'post',
 				method: 'post',
 				url: '/api/sex_trap_view',
 				url: '/api/sex_trap_view',
 				data: this.qs.stringify({
 				data: this.qs.stringify({
-					// page_size: 8,
-					// device_id: this.queryInfo.f_id,
-					// device_name: this.queryInfo.ename,
-					// page: this.queryInfo.page,
-					// device_status: this.queryInfo.is_online,
-					// etype: this.queryInfo.etype
-					f_id: '',
-					ename: '',
+					f_id: this.queryInfo.f_id,
+					ename: this.queryInfo.ename,
 					page: this.queryInfo.page,
 					page: this.queryInfo.page,
 					is_online: this.queryInfo.is_online,
 					is_online: this.queryInfo.is_online,
-					etype: this.queryInfo.etype //1代表I型,2代表II型
+					etype: '' //1代表I型,2代表II型
 				})
 				})
 			}).then((res) => {
 			}).then((res) => {
+				this.tableLoading = false;
 				let data = res.data.dat
 				let data = res.data.dat
 				let arr = data.map((item) => {
 				let arr = data.map((item) => {
 					let obj= eval('(' + item.sex_trap + ')')
 					let obj= eval('(' + item.sex_trap + ')')
@@ -524,9 +493,11 @@ export default {
 					obj.is_online=Number(item.is_online)
 					obj.is_online=Number(item.is_online)
 					return obj
 					return obj
 				})
 				})
-				console.log(arr)
 				this.equipList = arr
 				this.equipList = arr
 				this.totalNum = res.data.nums
 				this.totalNum = res.data.nums
+			},error =>{
+				this.dataloading = false
+				this.$message.error('获取失败')
 			})
 			})
 		},
 		},
 		//改变page
 		//改变page
@@ -535,11 +506,11 @@ export default {
 			this.getEquipList()
 			this.getEquipList()
 		},
 		},
 		// 数据详情
 		// 数据详情
-		dataDetails(e_id, d_id, etype) {
-			this.currImei = e_id
+		dataDetails(id,name) {
+			this.currImei = id
 			this.$router.push({
 			this.$router.push({
-				path: `/index/xycbDataDetail/${e_id}/${d_id}`,
-				query: { etype: etype }
+				path: `/index/xycbDataDetail/`,
+				query: { e_id: id ,name:name}
 			})
 			})
 		},
 		},
 		//sim卡状态
 		//sim卡状态
@@ -555,47 +526,71 @@ export default {
 			})
 			})
 		},
 		},
 		//设备控制操作
 		//设备控制操作
-		EquipControl(model, d_id) {
-			if (model == 1) {
-				this.equipControlDialogVisible1 = true
-			} else {
-				this.equipControlDialogVisible2 = true
-			}
-			this.d_id = d_id
+		EquipControl(id) {
+			this.equipControlDialogVisible1 = true
+			this.currImei = id
 			this.$axios({
 			this.$axios({
 				method: 'POST',
 				method: 'POST',
 				url:
 				url:
-					'/api/api_gateway?method=forecast.send_control.device_control_info',
-				data: this.qs.stringify({ d_id, get_type: 1 })
+					'/api/sex_trap_detail',
+				data: this.qs.stringify({ id:id })
 			}).then((res) => {
 			}).then((res) => {
-				if (Object.keys(res.data.data).length > 0) {
-					let data = res.data.data
-					if (model == 1) {
-						this.equipContrlForm1 = data
-					} else {
-						this.equipContrlForm2 = data
+				if(res.data.sex_trap.length>3){
+					var sex_trap = eval('('+res.data.sex_trap+')');
+					var dat_f = parseInt(sex_trap.dat_f) || 10
+					var ds = parseInt(sex_trap.ds)
+					this.equipContrlForm1 = {
+						ds: ds, //时控开始时间
+						st: sex_trap.st, //时控开始时间
+						et: sex_trap.et, //时控结束时间
+						dat_f: dat_f //数据上传时间间隔
 					}
 					}
+					console.log(this.equipContrlForm1)
+					this.equipControlDialogVisible = true
+				}
+			})
+		},
+		wsChange(){
+			if(this.equipContrlForm1.ds == 1){
+				var data = {
+					ext: 'work_tim1',
+					st: this.equipContrlForm1.st,
+					et: this.equipContrlForm1.et,
+					e_id: this.currImei
+				}
+			}else{
+				var data = {
+					ext: 'work_tim0',
+					e_id: this.currImei
+				}	
+			}
+			this.$axios({
+				method: 'POST',
+				url:
+					'/api/sex_mqtt_v1',
+				data: this.qs.stringify(data)
+			}).then((res) => {
+				if(res.data == 0){
+					this.$message.success('设备控制修改成功')
 				}
 				}
-				this.equipControlDialogVisible = true
 			})
 			})
 		},
 		},
 		equipControlSubm(form) {
 		equipControlSubm(form) {
 			this.$axios({
 			this.$axios({
 				method: 'POST',
 				method: 'POST',
-				url: '/api/api_gateway?method=forecast.send_control.device_control',
+				url: '/api/sex_mqtt_v1',
 				data: this.qs.stringify({
 				data: this.qs.stringify({
-					device_type_id: 4,
-					d_id: this.d_id,
-					config: JSON.stringify(form)
+					ext: 'data_tim',
+					dat_f: this.equipContrlForm1.dat_f,
+					e_id: this.currImei
 				})
 				})
 			}).then((res) => {
 			}).then((res) => {
-				if (res.data.data) {
+				if (res.data == 0) {
 					this.$message.success('设备控制修改成功')
 					this.$message.success('设备控制修改成功')
 				} else {
 				} else {
 					this.$message.error('设备控制修改失败')
 					this.$message.error('设备控制修改失败')
 				}
 				}
 				this.equipControlDialogVisible1 = false
 				this.equipControlDialogVisible1 = false
-				this.equipControlDialogVisible2 = false
 			})
 			})
 		},
 		},
 		//SIM
 		//SIM

+ 45 - 142
bigdata2/src/pages/forecasting/xycb/xycbDataDetail.vue

@@ -5,12 +5,10 @@
 			<el-breadcrumb-item :to="{ path: '/index/xycb' }">性诱测报</el-breadcrumb-item>
 			<el-breadcrumb-item :to="{ path: '/index/xycb' }">性诱测报</el-breadcrumb-item>
 			<el-breadcrumb-item>数据详情</el-breadcrumb-item>
 			<el-breadcrumb-item>数据详情</el-breadcrumb-item>
 		</el-breadcrumb>
 		</el-breadcrumb>
-		<!-- {{options}}--{{options2}}--{{options3}} -->
 		<div class="equipInfo">
 		<div class="equipInfo">
 			<div class="equipMsg">
 			<div class="equipMsg">
 				<span>设备ID:{{this.queryInfo.e_id}}</span>
 				<span>设备ID:{{this.queryInfo.e_id}}</span>
-				<span>设备名称:{{equipStatus.equip_name || '无'}}</span>
-				<span>位置:{{equipStatus.lng}}</span>
+				<span>设备名称:{{name || '无'}}</span>
 			</div>
 			</div>
 			<DateSearch @dateChange="dateChange"></DateSearch>
 			<DateSearch @dateChange="dateChange"></DateSearch>
 		</div>
 		</div>
@@ -45,22 +43,12 @@
 										<div style="text-align:center;font-size:20px;line-height:450px">暂无数据</div>
 										<div style="text-align:center;font-size:20px;line-height:450px">暂无数据</div>
 									</template>
 									</template>
 								</template>
 								</template>
-								<template v-if="device_model==2">
-									<!-- <highcharts :options="options3" :key="2"></highcharts> -->
-									<template v-if="Object.keys(options3).length>0">
-										<highcharts :options="options3"></highcharts>
-									</template>
-									<template v-else>
-										<div style="text-align:center;font-size:20px;line-height:450px">暂无数据</div>
-									</template>
-								</template>
 							</div>
 							</div>
 						</el-card>
 						</el-card>
 					</el-col>
 					</el-col>
 				</el-row>
 				</el-row>
 				<div class="dataTableSearch">
 				<div class="dataTableSearch">
 					<div>
 					<div>
-						<el-button type="primary" size="mini">导出</el-button>
 					</div>
 					</div>
 				</div>
 				</div>
 			</div>
 			</div>
@@ -93,7 +81,8 @@ import DateSearch from '@/components/DateSearch'
 export default {
 export default {
 	data() {
 	data() {
 		return {
 		return {
-			device_model: this.$route.query.device_model, //性诱1型或II型
+			device_model: 1, //性诱1型或II型
+			name:this.$route.query.name,
 			btnSelected: '',
 			btnSelected: '',
 			lineTime: '',
 			lineTime: '',
 			dataTime: '',
 			dataTime: '',
@@ -109,7 +98,6 @@ export default {
 				}
 				}
 			],
 			],
 			options2: {},
 			options2: {},
-			options3: {},
 			// 状态信息
 			// 状态信息
 			equipStatus: {},
 			equipStatus: {},
 			// 统计图表信息
 			// 统计图表信息
@@ -118,7 +106,6 @@ export default {
 			total: 0,
 			total: 0,
 			// 动态表头
 			// 动态表头
 			tableHeadTxt: [
 			tableHeadTxt: [
-				['型号', 'proj'],
 				['设备开关', 'ds'],
 				['设备开关', 'ds'],
 				['工作状态', 'ws'],
 				['工作状态', 'ws'],
 				['环境温度', 'at'],
 				['环境温度', 'at'],
@@ -127,7 +114,6 @@ export default {
 				['电池电压', 'bv'],
 				['电池电压', 'bv'],
 				['充电状态', 'cs'],
 				['充电状态', 'cs'],
 				['电池状态', 'bs'],
 				['电池状态', 'bs'],
-				['CPU温度', 'cpu_tmp'],
 				['信号强度', 'csq'],
 				['信号强度', 'csq'],
 				['版本号', 'dver'],
 				['版本号', 'dver'],
 				['上报时间', 'addtime']
 				['上报时间', 'addtime']
@@ -138,8 +124,7 @@ export default {
 			queryInfo: {
 			queryInfo: {
 				begin: '',
 				begin: '',
 				end: '',
 				end: '',
-				e_id: this.$route.params.e_id,
-				d_id: this.$route.params.d_id,
+				e_id: this.$route.query.e_id,
 				page: 1
 				page: 1
 			},
 			},
 			//图表实时否有数据
 			//图表实时否有数据
@@ -163,19 +148,25 @@ export default {
 		// this.getHisDataList()
 		// this.getHisDataList()
 	},
 	},
 	methods: {
 	methods: {
+		// 返回时间戳
+		returnTime(time) {
+			var thisTime = time.replace(/-/g, '/');
+			var time = new Date(thisTime);
+			var timestamp = time.getTime() + 8 * 3600000;
+			return timestamp;
+		},
 		//获取折线数据
 		//获取折线数据
 		getChartDataList() {
 		getChartDataList() {
 			this.$axios({
 			this.$axios({
 				method: 'POST',
 				method: 'POST',
-				url: '/api/api_gateway?method=forecast.worm_lamp.device_polyline_data',
+				url: '/api/sex_at_ah',
 				data: this.qs.stringify({
 				data: this.qs.stringify({
-					device_type_id: 4,
-					device_id: this.queryInfo.e_id,
-					start_time: this.queryInfo.begin,
-					end_time: this.queryInfo.end
+					begin:  this.queryInfo.begin,
+					end: this.queryInfo.end,
+					e_id: this.queryInfo.e_id,
 				})
 				})
 			}).then((res) => {
 			}).then((res) => {
-				if (res.data.message == '' && res.data.data.length > 0) {
+				if (res.data.length > 0) {
 					var ChartData = [
 					var ChartData = [
 						{
 						{
 							name: '温度(°C)',
 							name: '温度(°C)',
@@ -198,40 +189,23 @@ export default {
 							dat: []
 							dat: []
 						}
 						}
 					]
 					]
-					var data = res.data.data
+					var data = res.data
 					for (let item of data) {
 					for (let item of data) {
 						ChartData[0].dat.unshift([
 						ChartData[0].dat.unshift([
-							item.addtime * 1000 + 8 * 3600000,
-							Number(item.temperature)
+							this.returnTime(item.tim),
+							Number(item.at)
 						])
 						])
 						ChartData[1].dat.unshift([
 						ChartData[1].dat.unshift([
-							item.addtime * 1000 + 8 * 3600000,
-							Number(item.humidity)
+							this.returnTime(item.tim),
+							Number(item.ah)
 						])
 						])
-						if (Object.keys(item.others).length == 2) {
-							this.device_model = 1 //2型
-							ChartData[2].dat.unshift([
-								item.addtime * 1000 + 8 * 3600000,
-								Number(item.infr_ct)
-							])
-							ChartData[3].dat.unshift([
-								item.addtime * 1000 + 8 * 3600000,
-								Number(item.volt_ct)
-							])
-						} else {
-							this.device_model = 2 //1型
-							ChartData[4].dat.unshift([
-								item.addtime * 1000 + 8 * 3600000,
-								Number(item.cpu_tmp)
-							])
-						}
 					}
 					}
 					this.options = {
 					this.options = {
 						chart: {
 						chart: {
 							zoomType: 'x'
 							zoomType: 'x'
 						},
 						},
 						title: {
 						title: {
-							text: '环境温湿度',
+							text: '环境温度',
 							align: 'left'
 							align: 'left'
 						},
 						},
 						subtitle: {
 						subtitle: {
@@ -276,13 +250,9 @@ export default {
 								name: ChartData[0].name,
 								name: ChartData[0].name,
 								data: ChartData[0].dat
 								data: ChartData[0].dat
 							},
 							},
-							{
-								type: 'spline',
-								name: ChartData[1].name,
-								data: ChartData[1].dat
-							}
+							
 						],
 						],
-						colors: ['#00e29d', '#6cbbff', '#ff3f3f'],
+						colors: ['#6cbbff', '#ff3f3f','#00e29d', ],
 						credits: {
 						credits: {
 							//去掉默认的highcharts.com
 							//去掉默认的highcharts.com
 							enabled: false
 							enabled: false
@@ -298,7 +268,7 @@ export default {
 							zoomType: 'x'
 							zoomType: 'x'
 						},
 						},
 						title: {
 						title: {
-							text: '红外计数值 、高压计数值',
+							text: '环境湿度',
 							align: 'left'
 							align: 'left'
 						},
 						},
 						subtitle: {
 						subtitle: {
@@ -340,12 +310,7 @@ export default {
 						series: [
 						series: [
 							{
 							{
 								type: 'spline',
 								type: 'spline',
-								name: ChartData[2].name,
-								data: ChartData[0].dat
-							},
-							{
-								type: 'spline',
-								name: ChartData[3].name,
+								name: ChartData[1].name,
 								data: ChartData[1].dat
 								data: ChartData[1].dat
 							}
 							}
 						],
 						],
@@ -376,72 +341,10 @@ export default {
 							]
 							]
 						}
 						}
 					}
 					}
-					this.options3 = {
-						chart: {
-							zoomType: 'x'
-						},
-						title: {
-							text: 'CPU温度',
-							align: 'left'
-						},
-						subtitle: {
-							text: ''
-						},
-						xAxis: {
-							crosshair: true, //十字基准线
-							type: 'datetime',
-							dateTimeLabelFormats: {
-								//根据时间间距X轴自动显示哪种格式
-								millisecond: '%H:%M:%S.%L',
-								second: '%H:%M:%S',
-								minute: '%H:%M',
-								hour: '%H:%M',
-								day: '%m-%d',
-								week: '%m-%d',
-								month: '%Y-%m',
-								year: '%Y'
-							}
-						},
-						yAxis: {
-							title: {
-								text: ''
-							}
-						},
-						legend: {
-							// layout: 'vertical',
-							align: 'right',
-							verticalAlign: 'top'
-						},
-						plotOptions: {
-							series: {
-								label: {
-									connectorAllowed: false
-								},
-								pointStart: 2010
-							}
-						},
-						series: [
-							{
-								type: 'spline',
-								name: ChartData[4].name,
-								data: ChartData[0].dat
-							}
-						],
-						colors: ['#00e29d', '#6cbbff', '#ff3f3f'],
-						credits: {
-							//去掉默认的highcharts.com
-							enabled: false
-						},
-						tooltip: {
-							// crosshairs: true,
-							shared: true, //折线共享
-							headerFormat: '<b>{point.x:%Y-%m-%e %H:%M:%S}</b><br>'
-						},
-					}
+					
 				}else{
 				}else{
 					this.options = {};
 					this.options = {};
 					this.options2 = {};
 					this.options2 = {};
-					this.options3 = {};
 				}
 				}
 			})
 			})
 		},
 		},
@@ -449,24 +352,22 @@ export default {
 		getHisDataList() {
 		getHisDataList() {
 			this.$axios({
 			this.$axios({
 				method: 'POST',
 				method: 'POST',
-				url: '/api/api_gateway?method=forecast.worm_lamp.device_history_data',
+				url: '/api/sex_trap_data',
 				data: this.qs.stringify({
 				data: this.qs.stringify({
-					device_type_id: 4,
-					device_id: this.queryInfo.e_id,
-					start_time: this.queryInfo.begin,
-					end_time: this.queryInfo.end,
+					e_id: this.queryInfo.e_id,
+					begin: this.queryInfo.begin,
+					end: this.queryInfo.end,
 					page: this.queryInfo.page
 					page: this.queryInfo.page
 				})
 				})
 			}).then((res) => {
 			}).then((res) => {
-				if (res.data.message == '') {
-					this.total = res.data.data.counts
-					var data = res.data.data.data
+				this.total = res.data.nums
+				if (this.total > 0) {
+					var data = res.data.dat
 					if (data.length > 0) {
 					if (data.length > 0) {
 						this.tableData = []
 						this.tableData = []
 						for (var i = 0; i < data.length; i++) {
 						for (var i = 0; i < data.length; i++) {
-							var dht = data[i].d_h_t
-							dht.addtime = this.formatTime(dht.addtime*1000)
-							console.log(dht.ws)
+							var dht = eval('('+data[i].sex_trap+')');
+							dht.addtime = data[i].upl_time
 							dht.ws = dht.ws ? '工作' : '待机'
 							dht.ws = dht.ws ? '工作' : '待机'
 							dht.cs = dht.cs ? '充电中' : '未充电'
 							dht.cs = dht.cs ? '充电中' : '未充电'
 							if(dht.bs == 0){
 							if(dht.bs == 0){
@@ -480,6 +381,8 @@ export default {
 							dht.ds = dht.ds ? '关' : '开'
 							dht.ds = dht.ds ? '关' : '开'
 							dht.tps = dht.tps ? '正常' : '温控'
 							dht.tps = dht.tps ? '正常' : '温控'
 							dht.lps = dht.lps ? '夜晚' : '白天'
 							dht.lps = dht.lps ? '夜晚' : '白天'
+							dht.cv = (dht.cv /1000).toFixed(2);
+							dht.bv = (dht.bv/1000).toFixed(2);
 							if (dht.lamp != undefined) {
 							if (dht.lamp != undefined) {
 								if (dht.ws == 1) {
 								if (dht.ws == 1) {
 									if (stat.lamp == 1) {
 									if (stat.lamp == 1) {
@@ -509,9 +412,10 @@ export default {
 			this.getHisDataList()
 			this.getHisDataList()
 		},
 		},
 		dateChange(data) {
 		dateChange(data) {
+			console.log(data.begin);
 			this.queryInfo.page = 1
 			this.queryInfo.page = 1
-			this.queryInfo.begin = data.begin
-			this.queryInfo.end = data.end
+			this.queryInfo.begin = data.begin?new Date(data.begin*1000).toLocaleDateString().replace(/\//g,'-'):''; 
+			this.queryInfo.end = data.end?new Date(data.end*1000).toLocaleDateString().replace(/\//g,'-'):''; 
 			this.getHisDataList()
 			this.getHisDataList()
 			this.getChartDataList()
 			this.getChartDataList()
 		},
 		},
@@ -523,14 +427,13 @@ export default {
 		refresh() {
 		refresh() {
 			this.$axios({
 			this.$axios({
 				method: 'POST',
 				method: 'POST',
-				url: '/api/api_gateway?method=forecast.send_control.get_device_config',
+				url: '/api/sex_mqtt_v1',
 				data: this.qs.stringify({
 				data: this.qs.stringify({
-					device_type_id: 4,
-					d_id: this.queryInfo.d_id,
-					control_type: 'data'
+					ext: 'data',
+					e_id: this.queryInfo.e_id,
 				})
 				})
 			}).then((res) => {
 			}).then((res) => {
-				if (res.data.data) {
+				if (res.data == 0) {
 					this.$message.success('刷新成功')
 					this.$message.success('刷新成功')
 				} else {
 				} else {
 					this.$message.err('刷新失败')
 					this.$message.err('刷新失败')

+ 2 - 2
bigdata2/src/router/index.js

@@ -87,7 +87,7 @@ export default new Router({
         component: BzyPhotos
         component: BzyPhotos
       },
       },
       {
       {
-        path: 'dataDetail/:e_id/:d_id',
+        path: 'dataDetail/:e_id',
         component: DataDetail
         component: DataDetail
       },
       },
       //------------------测报模块-------------性诱测报-------------
       //------------------测报模块-------------性诱测报-------------
@@ -100,7 +100,7 @@ export default new Router({
         component: xycbDataPhotos
         component: xycbDataPhotos
       },
       },
       {
       {
-        path: 'xycbDataDetail/:e_id/:d_id',
+        path: 'xycbDataDetail',
         component: xycbDataDetail
         component: xycbDataDetail
       },
       },
       //------------------防治模块-------------杀虫灯-------------
       //------------------防治模块-------------杀虫灯-------------