You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							289 lines
						
					
					
						
							9.5 KiB
						
					
					
				
			
		
		
		
			
			
			
				
					
				
				
					
				
			
		
		
	
	
							289 lines
						
					
					
						
							9.5 KiB
						
					
					
				
								<!DOCTYPE html>
							 | 
						|
								<html lang="en">
							 | 
						|
								
							 | 
						|
								<head>
							 | 
						|
								    <meta charset="UTF-8">
							 | 
						|
								    <meta name="viewport" content="width=device-width, initial-scale=1.0">
							 | 
						|
								    <meta http-equiv="X-UA-Compatible" content="ie=edge">
							 | 
						|
								    <link rel="shortcut icon" href="../../image/oss/iot/favicon2.ico" type="image/x-icon" />
							 | 
						|
								    <link rel="stylesheet" href="../../lib/element-ui/index.css" />
							 | 
						|
								    <link rel="stylesheet" href="./css/index.css" />
							 | 
						|
								    <script src="../common/util.js"></script>
							 | 
						|
								    <script src="../../lib/bigscreen/js/vue.min.js"></script>
							 | 
						|
								    <script src="../../lib/bigscreen/lib/jquery/jquery-1.9.1.min.js"></script>
							 | 
						|
								    <script type="text/javascript" src="../../lib/layer/layer.js"></script>
							 | 
						|
								    <script src="../../lib/element-ui/index.js"></script>
							 | 
						|
									<title>子设备管理</title>
							 | 
						|
								</head>
							 | 
						|
								<body>
							 | 
						|
									<el-container id="app" v-cloak v-loading.fullscreen.lock="fullscreenLoading">
							 | 
						|
										<el-aside width="170px" :height="aheight">
							 | 
						|
											<div class="prolist">
							 | 
						|
												<span>项目列表</span>
							 | 
						|
											</div>
							 | 
						|
											<ul class="dashboard-menu">
							 | 
						|
												<li v-for="(item,index) in sceneData" @click="selectScene(index,item.id)" :class="{'active':(oindex==index)}">
							 | 
						|
													<i class="el-icon-box"></i><span class="pro-name" v-text="item.name"></span>
							 | 
						|
												</li>
							 | 
						|
											</ul>
							 | 
						|
										</el-aside>
							 | 
						|
								  		<el-container class="sub-el-container">
							 | 
						|
								    		<el-header>
							 | 
						|
								    			<div class="search">
							 | 
						|
													<el-form :inline="true" :model="param" class="demo-form-inline">
							 | 
						|
													  <el-form-item label="名称">
							 | 
						|
													    <el-input v-model="param.name" size="medium" placeholder="名称" clearable ></el-input>
							 | 
						|
													  </el-form-item>
							 | 
						|
													  <el-form-item label="网关">
							 | 
						|
													    <el-select v-model="param.node_id" size="medium" placeholder="请选择">
							 | 
						|
														   <el-option
							 | 
						|
														      v-for="item in nodeData"
							 | 
						|
															      :key="item.id"
							 | 
						|
															      :label="item.name"
							 | 
						|
															      :value="item.id">
							 | 
						|
														    </el-option>
							 | 
						|
														</el-select>
							 | 
						|
													  </el-form-item>
							 | 
						|
													  <el-form-item>
							 | 
						|
													    <el-button type="info" size="small" icon="el-icon-search" @click="search" >查询</el-button>
							 | 
						|
													    <el-button type="primary" size="small" icon="el-icon-circle-plus-outline" @click="add" >新增</el-button>
							 | 
						|
													  </el-form-item>
							 | 
						|
													</el-form>			
							 | 
						|
												</div>
							 | 
						|
								    		</el-header>
							 | 
						|
								    		<el-main>
							 | 
						|
								    			<el-table :data="deviceData" :height="height"  style="width: 100%">
							 | 
						|
									    			<el-table-column type="index" label="序号" width="100"></el-table-column>
							 | 
						|
									    			<el-table-column prop="name" label="设备名称" >
							 | 
						|
									    			</el-table-column>
							 | 
						|
									    			<el-table-column prop="node_name" label="网关名称" >
							 | 
						|
									    			</el-table-column>
							 | 
						|
									    			<el-table-column prop="address" label="设备ID" >
							 | 
						|
									    			</el-table-column>
							 | 
						|
									    			<el-table-column label="属性设置" >
							 | 
						|
									    				<template slot-scope="scope">
							 | 
						|
									    					<el-button type="primary" @click="detailInfo(scope.row)" size="mini" icon="el-icon-document" circle></el-button>
							 | 
						|
												        </template>
							 | 
						|
									    			</el-table-column>
							 | 
						|
									    			<el-table-column  label="操作">
							 | 
						|
									    				<template slot-scope="scope">
							 | 
						|
									    					<el-button type="primary" @click="editDevice(scope.row)" size="mini" icon="el-icon-edit" circle></el-button>
							 | 
						|
									    					<el-button type="danger" @click="deleteDevice(scope.row.id)" size="mini" icon="el-icon-delete" circle></el-button>
							 | 
						|
												        </template>
							 | 
						|
									    			</el-table-column>
							 | 
						|
									  			</el-table>
							 | 
						|
								    		</el-main>
							 | 
						|
								  		</el-container>
							 | 
						|
								  		
							 | 
						|
								  		<el-dialog :title="titleName" :visible.sync="dialogFormVisible"  width="50%" >
							 | 
						|
											  <el-form :model="postparam" size="medium" class="postparam" >
							 | 
						|
											    <el-form-item label="名称" :label-width="formLabelWidth" :rules="[{required: true}]" >
							 | 
						|
											      <el-input v-model="postparam.name" autocomplete="off" placeholder="请输入" ></el-input>
							 | 
						|
											    </el-form-item>
							 | 
						|
											    <el-form-item label="设备ID" :label-width="formLabelWidth" :rules="[{required: true}]">
							 | 
						|
											      <el-input v-model="postparam.address" placeholder="请输入"  autocomplete="off"></el-input>
							 | 
						|
											    </el-form-item>
							 | 
						|
											    <el-form-item label="网关" :label-width="formLabelWidth" :rules="[{required: true}]">
							 | 
						|
											        <el-select v-model="postparam.node_id" size="medium" placeholder="请选择">
							 | 
						|
													   <el-option
							 | 
						|
													      v-for="item in nodeData"
							 | 
						|
														      :key="item.id"
							 | 
						|
														      :label="item.name"
							 | 
						|
														      :value="item.id">
							 | 
						|
													    </el-option>
							 | 
						|
													</el-select>
							 | 
						|
											    </el-form-item>
							 | 
						|
											    <el-form-item label="排序" :label-width="formLabelWidth">
							 | 
						|
											      <el-input v-model="postparam.seq" type="number" placeholder="请输入" autocomplete="off"></el-input>
							 | 
						|
											    </el-form-item>
							 | 
						|
											  </el-form>
							 | 
						|
											  <div slot="footer" class="dialog-footer">
							 | 
						|
											    <el-button @click="dialogFormVisible = false">取 消</el-button>
							 | 
						|
											    <el-button type="primary" @click="saveDeviceData" >确 定</el-button>
							 | 
						|
											  </div>
							 | 
						|
										</el-dialog>
							 | 
						|
								  		
							 | 
						|
									</el-container>
							 | 
						|
									
							 | 
						|
									<script type="text/javascript">
							 | 
						|
										var app = new Vue({
							 | 
						|
											el: '#app' ,
							 | 
						|
											data: function(){
							 | 
						|
												return {
							 | 
						|
													fullscreenLoading :true  ,   // 加载提示 
							 | 
						|
													param: {
							 | 
						|
														name: '' ,
							 | 
						|
														node_id: ''
							 | 
						|
													} ,
							 | 
						|
													postparam:{		 // 提交数据
							 | 
						|
													},
							 | 
						|
													formLabelWidth: '120px' , 
							 | 
						|
													height: '' ,
							 | 
						|
													dialogFormVisible: false ,	// 新增弹窗
							 | 
						|
													scene_id: '' ,	 // 项目id
							 | 
						|
													aheight:'' ,
							 | 
						|
													sceneData: '' ,  // 项目信息
							 | 
						|
													oindex: 0,		 // 项目选中
							 | 
						|
													nodeData: '' ,	 // 网关信息
							 | 
						|
													deviceData : '' ,// 设备信息
							 | 
						|
													titleName: '新增设备',  // 操作栏名字
							 | 
						|
												}
							 | 
						|
											},
							 | 
						|
											methods: {
							 | 
						|
												getSceneInfo(data){
							 | 
						|
													commonAjax('POST',baseurl+"/service/page/scene?paged=1&pageSize=100", data ,function(res){
							 | 
						|
														if(res.status == 2){
							 | 
						|
															var dt = res.data.data ;
							 | 
						|
															app.sceneData = dt ;
							 | 
						|
															app.scene_id = dt[0].id  ;
							 | 
						|
															// 查询第一个场景下网关信息
							 | 
						|
															app.getNodeData( {scene_id: dt[0].id } ); 
							 | 
						|
															// 查询网关下的设备信息
							 | 
						|
															app.getDeviceData( {scene_id: dt[0].id } );
							 | 
						|
														}
							 | 
						|
													});
							 | 
						|
												},
							 | 
						|
												add(){
							 | 
						|
													this.titleName = '新增设备' ;
							 | 
						|
													this.dialogFormVisible=true ;
							 | 
						|
													app.postparam = {} ;
							 | 
						|
												},
							 | 
						|
												getNodeData(data){
							 | 
						|
													commonAjax('POST',baseurl+"/service/page/node?paged=1&pageSize=100", data ,function(res){
							 | 
						|
														if(res.status == 2){
							 | 
						|
															var dt = res.data.data ;
							 | 
						|
															app.nodeData = dt ;
							 | 
						|
														}else{
							 | 
						|
															app.nodeData = [] ;
							 | 
						|
														}
							 | 
						|
														// 清空
							 | 
						|
														app.param.node_id = '' ;
							 | 
						|
													});
							 | 
						|
												},
							 | 
						|
												getDeviceData(data){
							 | 
						|
													commonAjax('POST',baseurl+"/service/page/sensor/device?paged=1&pageSize=100", data ,function(res){
							 | 
						|
														if(res.status == 2){
							 | 
						|
															var dt = res.data.data ;
							 | 
						|
															app.deviceData = dt ;
							 | 
						|
														}else{
							 | 
						|
															app.deviceData = [] ;
							 | 
						|
														}
							 | 
						|
													});
							 | 
						|
												},
							 | 
						|
												search(){
							 | 
						|
													app.getDeviceData( {scene_id:this.scene_id, node_id: this.param.node_id } );
							 | 
						|
												},
							 | 
						|
												selectScene(i,id){
							 | 
						|
													this.scene_id = id ;
							 | 
						|
													this.oindex = i ;
							 | 
						|
													this.getNodeData( {scene_id: id } ); 
							 | 
						|
													// 回调查询
							 | 
						|
													app.search() ;
							 | 
						|
												},
							 | 
						|
												detailInfo(obj){
							 | 
						|
													layer.open({
							 | 
						|
													      type: 2,
							 | 
						|
													      title: '传感器列表',
							 | 
						|
													      shadeClose: true,
							 | 
						|
													      shade: 0.7,
							 | 
						|
													      maxmin: true, //开启最大化最小化按钮
							 | 
						|
													      area: ['900px', '90%'],
							 | 
						|
													      content: baseurl + "/service/iot/sensors_manger?node_id=" + obj.node_id+"&sensor_device_id="+obj.address
							 | 
						|
													});
							 | 
						|
												},
							 | 
						|
												saveDeviceData(){
							 | 
						|
													if(util.isEmpty(this.postparam.name)){
							 | 
						|
														app.$message({
							 | 
						|
													          message: '名称不能为空',
							 | 
						|
													          type: 'warning',
							 | 
						|
													          duration:1500
							 | 
						|
													        });
							 | 
						|
														return ;
							 | 
						|
													}
							 | 
						|
													if(util.isEmpty(this.postparam.address)){
							 | 
						|
														app.$message({
							 | 
						|
													          message: '设备ID不能为空',
							 | 
						|
													          type: 'warning',
							 | 
						|
													          duration:1500
							 | 
						|
													        });
							 | 
						|
														return ;
							 | 
						|
													}
							 | 
						|
													
							 | 
						|
													if( this.postparam.id != null  ){
							 | 
						|
														commonAjax('PUT',baseurl+"/service/sensor/device.json" , this.postparam  ,function(res){
							 | 
						|
															if(res.status == 2){
							 | 
						|
																app.$message({
							 | 
						|
														          message: '编辑成功',
							 | 
						|
														          type: 'success',
							 | 
						|
														          duration:1000
							 | 
						|
														        });
							 | 
						|
																
							 | 
						|
																// 回调查询
							 | 
						|
																app.search() ;
							 | 
						|
															}else{
							 | 
						|
																app.$message.error(res.statusMsg);
							 | 
						|
															}
							 | 
						|
															app.postparam = {} ;
							 | 
						|
															app.dialogFormVisible = false ;
							 | 
						|
														});
							 | 
						|
													}else{
							 | 
						|
														// 保存设备
							 | 
						|
														commonAjax('POST',baseurl+"/service/sensor/device.json" , this.postparam  ,function(res){
							 | 
						|
															if(res.status == 2){
							 | 
						|
																app.$message({
							 | 
						|
														          message: '添加成功',
							 | 
						|
														          type: 'success'
							 | 
						|
														        });
							 | 
						|
																
							 | 
						|
																// 回调查询
							 | 
						|
																app.search() ;
							 | 
						|
															}else{
							 | 
						|
																app.$message.error(res.statusMsg);
							 | 
						|
															}
							 | 
						|
															app.postparam = {} ;
							 | 
						|
															app.dialogFormVisible = false ;
							 | 
						|
														});
							 | 
						|
													}
							 | 
						|
												},
							 | 
						|
												editDevice(obj){
							 | 
						|
													this.postparam = obj ;
							 | 
						|
													this.titleName = '编辑设备' ;
							 | 
						|
													app.dialogFormVisible = true ;
							 | 
						|
												},
							 | 
						|
												deleteDevice(id){
							 | 
						|
													this.$confirm('是否删除该条信息?', '信息确认', {
							 | 
						|
												          confirmButtonText: '确定',
							 | 
						|
												          cancelButtonText: '取消',
							 | 
						|
												          type: 'warning'
							 | 
						|
												        }).then(() => {
							 | 
						|
												        	commonAjax('DELETE',baseurl+"/service/sensor/device.json?id="+id , ""  ,function(res){
							 | 
						|
																if(res.status == 2){
							 | 
						|
																	app.$message({
							 | 
						|
															          message: '删除成功',
							 | 
						|
															          type: 'success'
							 | 
						|
															        });
							 | 
						|
																	
							 | 
						|
																	// 回调查询
							 | 
						|
																	app.search() ;
							 | 
						|
																}else{
							 | 
						|
																	app.$message.error(res.statusMsg);
							 | 
						|
																}
							 | 
						|
															});
							 | 
						|
												        	
							 | 
						|
												        }).catch(()=>{} ) ;
							 | 
						|
												}
							 | 
						|
											},
							 | 
						|
											created(){
							 | 
						|
												this.height = window.innerHeight - 60; ;
							 | 
						|
												this.aheight = window.innerHeight ;
							 | 
						|
												this.getSceneInfo({}) ;
							 | 
						|
											},
							 | 
						|
											mounted(){
							 | 
						|
												setTimeout(() => {
							 | 
						|
													this.fullscreenLoading = false ;					
							 | 
						|
												}, 300);
							 | 
						|
											}
							 | 
						|
										});
							 | 
						|
									</script>
							 | 
						|
								</body>
							 | 
						|
									
							 |