zhangyun 3 лет назад
Родитель
Сommit
0353287dcd
100 измененных файлов с 13325 добавлено и 281 удалено
  1. 4 0
      components/jsencrypt/jsencrypt.min.js
  2. 88 0
      components/jsencrypt/jsencrypt.vue
  3. 4 0
      js_sdk/jsencrypt-Rsa/jsencrypt/jsencrypt.min.js
  4. 88 0
      js_sdk/jsencrypt-Rsa/jsencrypt/jsencrypt.vue
  5. 2 2
      manifest.json
  6. 9 0
      pages.json
  7. 290 0
      pages/afterSale/search.vue
  8. 4 4
      pages/cb/bzy/equip-set/bzyhistoryile.vue
  9. 2 2
      pages/cb/bzy/equip-set/equip-set.vue
  10. 819 0
      pages/cb/cbd/equip-set/analyse.vue
  11. 1 1
      pages/cb/cbd/equip-set/equip-set.vue
  12. 6 6
      pages/cb/cbd/equip-set/historyfile.vue
  13. 76 59
      pages/cb/cbd/equip-set/imgpage.vue
  14. 75 30
      pages/cb/cbd/equip-set/results.vue
  15. 50 5
      pages/cb/equip-detail/equip-detail.vue
  16. 1 1
      pages/cb/index/index.vue
  17. 251 0
      pages/cb/index/search.vue
  18. 6 4
      pages/cb/sim/sim.vue
  19. 1 1
      pages/cb/xy/equip-set/equip-set.vue
  20. 15 9
      pages/cb/xy/equip-set/xyhistoryile.vue
  21. 11 5
      pages/cb/xy2.0/particulars.vue
  22. 1 1
      pages/disease/cmb.vue
  23. 1 1
      pages/environment/contros.vue
  24. 88 64
      pages/environment/equipment.vue
  25. 172 0
      pages/environment/search.vue
  26. 338 0
      pages/equipList/search.vue
  27. 40 15
      pages/index/index.vue
  28. 1 1
      pages/irrigate/weathdata.vue
  29. 90 14
      pages/prevention/control.vue
  30. 32 3
      pages/prevention/index.vue
  31. 174 0
      pages/prevention/search.vue
  32. 36 7
      pages/prevention/ucharts.vue
  33. 1 0
      pages/webview.vue
  34. 539 0
      static/font/demo.css
  35. 1850 0
      static/font/demo_index.html
  36. BIN
      static/font/iconfont.eot
  37. 1 0
      static/font/iconfont.js
  38. 520 0
      static/font/iconfont.json
  39. 245 0
      static/font/iconfont.svg
  40. BIN
      static/font/iconfont.ttf
  41. BIN
      static/font/iconfont.woff
  42. BIN
      static/font/iconfont.woff2
  43. 2 1
      static/h52.html
  44. BIN
      static/images/12.png
  45. BIN
      static/images/13.png
  46. BIN
      static/images/14.png
  47. BIN
      static/images/15.png
  48. BIN
      static/images/16.png
  49. BIN
      static/images/17.png
  50. BIN
      static/images/18.png
  51. BIN
      static/images/19.png
  52. BIN
      static/images/cb/gaofengqi.png
  53. BIN
      static/images/cb/shijianqi.png
  54. BIN
      static/images/cb/zhongjianqi.png
  55. 1052 0
      static/js/cbd_pest_library.js
  56. BIN
      unpackage/cache/apk/__UNI__DBA6730_cm.apk
  57. 1 5
      unpackage/cache/apk/apkurl
  58. 1 5
      unpackage/cache/apk/cmManifestCache.json
  59. 3 7
      unpackage/cache/certdata
  60. BIN
      unpackage/cache/wgt/__UNI__DBA6730/.manifest/google-keystore.keystore
  61. 1 1
      unpackage/cache/wgt/__UNI__DBA6730/__uniappopenlocation.js
  62. 2 6
      unpackage/cache/wgt/__UNI__DBA6730/app-config-service.js
  63. 1 5
      unpackage/cache/wgt/__UNI__DBA6730/app-service.js
  64. 1 5
      unpackage/cache/wgt/__UNI__DBA6730/app-view.js
  65. 1 1
      unpackage/cache/wgt/__UNI__DBA6730/manifest.json
  66. 539 0
      unpackage/cache/wgt/__UNI__DBA6730/static/font/demo.css
  67. 1850 0
      unpackage/cache/wgt/__UNI__DBA6730/static/font/demo_index.html
  68. BIN
      unpackage/cache/wgt/__UNI__DBA6730/static/font/iconfont.eot
  69. 1 0
      unpackage/cache/wgt/__UNI__DBA6730/static/font/iconfont.js
  70. 520 0
      unpackage/cache/wgt/__UNI__DBA6730/static/font/iconfont.json
  71. 245 0
      unpackage/cache/wgt/__UNI__DBA6730/static/font/iconfont.svg
  72. BIN
      unpackage/cache/wgt/__UNI__DBA6730/static/font/iconfont.ttf
  73. BIN
      unpackage/cache/wgt/__UNI__DBA6730/static/font/iconfont.woff
  74. BIN
      unpackage/cache/wgt/__UNI__DBA6730/static/font/iconfont.woff2
  75. 2 1
      unpackage/cache/wgt/__UNI__DBA6730/static/h52.html
  76. BIN
      unpackage/cache/wgt/__UNI__DBA6730/static/images/12.png
  77. BIN
      unpackage/cache/wgt/__UNI__DBA6730/static/images/13.png
  78. BIN
      unpackage/cache/wgt/__UNI__DBA6730/static/images/14.png
  79. BIN
      unpackage/cache/wgt/__UNI__DBA6730/static/images/15.png
  80. BIN
      unpackage/cache/wgt/__UNI__DBA6730/static/images/16.png
  81. BIN
      unpackage/cache/wgt/__UNI__DBA6730/static/images/17.png
  82. BIN
      unpackage/cache/wgt/__UNI__DBA6730/static/images/18.png
  83. BIN
      unpackage/cache/wgt/__UNI__DBA6730/static/images/19.png
  84. BIN
      unpackage/cache/wgt/__UNI__DBA6730/static/images/cb/gaofengqi.png
  85. BIN
      unpackage/cache/wgt/__UNI__DBA6730/static/images/cb/shijianqi.png
  86. BIN
      unpackage/cache/wgt/__UNI__DBA6730/static/images/cb/zhongjianqi.png
  87. 1 1
      unpackage/cache/wgt/__UNI__DBA6730/view.css
  88. 3 3
      unpackage/cache/wgt/__UNI__DBA6730/view.umd.min.js
  89. 2 2
      unpackage/dist/build/app-plus/app-config-service.js
  90. 8 1
      unpackage/dist/build/app-plus/app-service.js
  91. 1 1
      unpackage/dist/build/app-plus/app-view.js
  92. 1 1
      unpackage/dist/build/app-plus/manifest.json
  93. 539 0
      unpackage/dist/build/app-plus/static/font/demo.css
  94. 1850 0
      unpackage/dist/build/app-plus/static/font/demo_index.html
  95. BIN
      unpackage/dist/build/app-plus/static/font/iconfont.eot
  96. 1 0
      unpackage/dist/build/app-plus/static/font/iconfont.js
  97. 520 0
      unpackage/dist/build/app-plus/static/font/iconfont.json
  98. 245 0
      unpackage/dist/build/app-plus/static/font/iconfont.svg
  99. BIN
      unpackage/dist/build/app-plus/static/font/iconfont.ttf
  100. 0 0
      unpackage/dist/build/app-plus/static/font/iconfont.woff

Разница между файлами не показана из-за своего большого размера
+ 4 - 0
components/jsencrypt/jsencrypt.min.js


+ 88 - 0
components/jsencrypt/jsencrypt.vue

@@ -0,0 +1,88 @@
+<template>
+	<view>
+		
+	</view>
+</template>
+
+<script>
+	import JSEncrypt from './jsencrypt.min.js';
+	export default {
+		data() {
+			return {
+				
+			}
+		},
+		methods: {
+			
+		},
+		getRealLen:function(str) {
+		    return str.replace(/[^\x00-\xff]/g, '__').length;
+			
+		},
+		setEncryptList:function(publicKey,str,max) {
+			var arr=[]
+		    
+		    var s=str,reg=/.{40}/g,ppstr=s.match(reg);
+		    ppstr.push(s.substring(ppstr.join('').length));
+			
+		    for (var nux=0;nux<ppstr.length;nux++) {
+		    	var Nax=this.getRealLen(ppstr[nux]);
+				if(Nax>116){
+					var list=this.setEncryptList(publicKey,ppstr[nux],Nax)
+					 for (var nu=0;nu<list.length;nu++) {
+						 arr.push(list[nu]);
+					 }
+				}else{
+				
+					arr.push(this.setEncrypt(publicKey,ppstr[nux]));
+				}
+		    
+		    }
+			return arr;
+		},		
+		setEncrypt:function(publicKey,data){
+				const encrypt =new JSEncrypt();
+				encrypt.setPublicKey(publicKey);
+		
+				return encrypt.encrypt(data);
+		},
+		setLongEncrypt:function(publicKey,data){
+			var s=data,reg=/.{116}/g,rs=s.match(reg);
+			rs.push(s.substring(rs.join('').length));
+			var arr=[];
+			for (var n=0;n<rs.length;n++) {
+				var max=this.getRealLen(rs[n]);
+				
+				if(max>116){
+				
+					var list=this.setEncryptList(publicKey,rs[n],max)
+					 for (var nu=0;nu<list.length;nu++) {
+						 arr.push(list[nu]);
+					 }
+				}else{
+					
+					arr.push(this.setEncrypt(publicKey,rs[n]));
+				}
+				
+			}
+			return arr;
+		},
+		setDecryptArray:function(PrivateKey,ArrayData){
+			var Decrypt="";
+			for (var n=0;n<ArrayData.length;n++) {
+				Decrypt=Decrypt+this.setDecrypt(PrivateKey,ArrayData[n]);	
+			}
+			return Decrypt;
+		},
+		setDecrypt:function(PrivateKey,data){
+				const encrypt =new JSEncrypt();
+				encrypt.setPrivateKey(PrivateKey);
+				
+				return encrypt.decrypt(data);
+		}
+	}
+</script>
+
+<style>
+
+</style>

Разница между файлами не показана из-за своего большого размера
+ 4 - 0
js_sdk/jsencrypt-Rsa/jsencrypt/jsencrypt.min.js


+ 88 - 0
js_sdk/jsencrypt-Rsa/jsencrypt/jsencrypt.vue

@@ -0,0 +1,88 @@
+<template>
+	<view>
+		
+	</view>
+</template>
+
+<script>
+	import JSEncrypt from './jsencrypt.min.js';
+	export default {
+		data() {
+			return {
+				
+			}
+		},
+		methods: {
+			
+		},
+		getRealLen:function(str) {
+		    return str.replace(/[^\x00-\xff]/g, '__').length;
+			
+		},
+		setEncryptList:function(publicKey,str,max) {
+			var arr=[]
+		    
+		    var s=str,reg=/.{40}/g,ppstr=s.match(reg);
+		    ppstr.push(s.substring(ppstr.join('').length));
+			
+		    for (var nux=0;nux<ppstr.length;nux++) {
+		    	var Nax=this.getRealLen(ppstr[nux]);
+				if(Nax>116){
+					var list=this.setEncryptList(publicKey,ppstr[nux],Nax)
+					 for (var nu=0;nu<list.length;nu++) {
+						 arr.push(list[nu]);
+					 }
+				}else{
+				
+					arr.push(this.setEncrypt(publicKey,ppstr[nux]));
+				}
+		    
+		    }
+			return arr;
+		},		
+		setEncrypt:function(publicKey,data){
+				const encrypt =new JSEncrypt();
+				encrypt.setPublicKey(publicKey);
+		
+				return encrypt.encrypt(data);
+		},
+		setLongEncrypt:function(publicKey,data){
+			var s=data,reg=/.{116}/g,rs=s.match(reg);
+			rs.push(s.substring(rs.join('').length));
+			var arr=[];
+			for (var n=0;n<rs.length;n++) {
+				var max=this.getRealLen(rs[n]);
+				
+				if(max>116){
+				
+					var list=this.setEncryptList(publicKey,rs[n],max)
+					 for (var nu=0;nu<list.length;nu++) {
+						 arr.push(list[nu]);
+					 }
+				}else{
+					
+					arr.push(this.setEncrypt(publicKey,rs[n]));
+				}
+				
+			}
+			return arr;
+		},
+		setDecryptArray:function(PrivateKey,ArrayData){
+			var Decrypt="";
+			for (var n=0;n<ArrayData.length;n++) {
+				Decrypt=Decrypt+this.setDecrypt(PrivateKey,ArrayData[n]);	
+			}
+			return Decrypt;
+		},
+		setDecrypt:function(PrivateKey,data){
+				const encrypt =new JSEncrypt();
+				encrypt.setPrivateKey(PrivateKey);
+				
+				return encrypt.decrypt(data);
+		}
+	}
+</script>
+
+<style>
+
+</style>

+ 2 - 2
manifest.json

@@ -2,8 +2,8 @@
     "name" : "云控",
     "appid" : "__UNI__DBA6730",
     "description" : "",
-    "versionName" : "1.4.7",
-    "versionCode" : 147,
+    "versionName" : "1.5.0",
+    "versionCode" : 150,
     "transformPx" : false,
     /* 5+App特有相关 */
     "app-plus" : {

+ 9 - 0
pages.json

@@ -594,6 +594,15 @@
             }
             
         }
+        ,{
+            "path" : "pages/cb/cbd/equip-set/analyse",
+            "style" :                                                                                    
+            {
+                "navigationBarTitleText": "害虫分析",
+                "enablePullDownRefresh": false
+            }
+            
+        }
     ],
 	"condition": { //模式配置,仅开发期间生效
 		"current": 3, //当前激活的模式(list 的索引项)

+ 290 - 0
pages/afterSale/search.vue

@@ -0,0 +1,290 @@
+<template>
+	<view>
+		<view class="status_bar"></view>
+		<view style="position: fixed;z-index: 100;top: 44px;">
+			<uni-nav-bar @clickLeft="clickLeft" left-icon="back" left-text="返回"></uni-nav-bar>
+			<view class="search_top_input">
+				<input type="text" value="" placeholder="请输入设备ID"  v-model="imports" @input="searchinp"/>
+				<u-icon name="search" size="40" class="icon" @click="search"></u-icon>
+			</view>
+		</view>
+		<view class="aftersaleinfo" v-if="aftersaleinfotf">
+			暂无此设备信息
+		</view>
+		<view class="aftersale" v-else>
+			<view class="aftersale_item" v-for="(item,index) in faultdata" :key="index">
+				<view class="aftersale_item_title">
+					<u-icon name="calendar" color="#71D8AF" size="34"></u-icon>
+					<span>设备 ID:{{item.device_id}}</span>
+				</view>
+				<view class="aftersale_item_con">
+					<p>联系人:{{item.user}}</p>
+					<p>联系电话:{{item.userphone}}</p>
+					<p>位置:{{item.addr}}</p>
+					<p>故障上报时间:{{item.uptime|timeFormat()}}</p>
+				</view>
+				<view class="aftersale_item_operate">
+					<button class="fault" @click="fault(item.errordesc)">故障原因</button>
+					<button :class="item.errorimg.length!=0?'imgs':'none'" :disabled="item.errorimg.length==0" @click="faultImg(item.errorimg)">图片</button>
+					<button :class="item.errorvideo?'video':'none'" :disabled="!item.errorvideo" @click="faultVideo(item.errorvideo)">视频</button>
+				</view>
+				<view class="aftersale_item_icon">
+					<image :src="'http://static.yfpyx.com/bigdata_app'+aftersale_icon[Number(item.device_type)-2].src" mode=""></image>
+				</view>
+			</view>
+		</view>
+		<u-modal v-model="show" :mask-close-able="maskcloseable" :show-confirm-button="showconfirmbutton" :title="title" class="model">
+			<view class="model_box">
+				<p v-if="faultinfo_tf">{{faultinfo}}</p>
+				<u-swiper :list="faultimg" v-if="faultimg_tf" class="uswiper" height="400" style="width: 100%;" @click="examine(faultimg)"></u-swiper>
+				<video :src="BASE_URL+faultvideo" controls v-if="faultvideo_tf" style="width: 90%;"></video>
+			</view>
+		</u-modal>
+	</view>
+</template>
+<script>
+	import {
+		Debounce,
+		Throttle
+	} from "../../util/anitthro.js"
+	export default {
+		data() {
+			return {
+				imports:'',
+				BASE_URL: 'http://182.92.193.64:8002',
+				faultdata:[],
+				aftersale_icon: [{
+						src: '/image/afterSale/6.png'
+					},
+					{
+						src: '/image/afterSale/1.png'
+					},
+					{
+						src: '/image/afterSale/4.png'
+					},
+					{
+						src: '/image/afterSale/3.png'
+					},
+					{
+						src: '/image/afterSale/5.png'
+					},
+					{
+						src: '/image/afterSale/2.png'
+					}
+				],
+				title:"",//弹框标题
+				show: false,//弹框先显示
+				maskcloseable: true,
+				showconfirmbutton: false,
+				faultinfo: '',//故障信息
+				faultinfo_tf:false,//故障信息显示
+				faultvideo: '',//故障视频
+				faultvideo_tf:false,//故障视频显示
+				faultimg: [],//故障图片
+				faultimg_tf: false,//故障图片显示
+				aftersaleinfotf:'',
+				page:1
+			}
+		},
+		methods: {
+			async getAftersale(num) {
+				const res = await this.$myRequest({
+					url: '/api/api_gateway?method=after_sale.after_sale_manage.aftersale_info',
+					data:{
+						f_id:num,
+						page:this.page
+					}
+				})
+				this.faultdata =this.faultdata.concat(res.data)
+				console.log(this.faultdata)
+				if(this.faultdata.length==0){
+					this.aftersaleinfotf = true
+				}else{
+					this.aftersaleinfotf = false
+				}
+				for (var i = 0; i < this.faultdata.length; i++) {
+					this.faultdata[i].errorimg = JSON.parse(this.faultdata[i].errorimg)
+					if (this.faultdata[i].errorimg == null) {
+						this.faultdata[i].errorimg = []
+					}
+				}
+			},
+			search(){
+				this.getAftersale(Number(this.imports))
+			},
+			fault(info) { //查看故障信息
+				this.title="故障信息"
+				this.show = true
+				this.faultinfo = info
+				this.faultimg_tf = false
+				this.faultinfo_tf=true
+				this.faultvideo_tf=false
+			},
+			faultImg(info) { //查看故障图片
+				this.faultimg=[]
+				for (var i = 0; i < info.length; i++) {
+					let obj = {}
+					obj.image = info[i]
+					this.faultimg.push(obj)
+				}
+				console.log(this.faultimg)
+				this.title="故障图片"
+				this.show = true
+				this.faultimg_tf = true
+				this.faultinfo_tf=false
+				this.faultvideo_tf=false
+			},
+			faultVideo(info) { //查看故障视频
+			this.title="故障视频"
+				this.faultvideo=info
+				this.show = true
+				this.faultimg_tf = false
+				this.faultinfo_tf=false
+				this.faultvideo_tf=true
+			},
+			clickLeft(){
+				uni.navigateTo({
+					url:"./index"
+				})
+			},
+			searchinp() {
+				Debounce(() => {
+					this.eqlistdata = []
+					this.search()
+				}, 1000)()
+			},
+			examine(url) {
+				var imgarr =[]
+				for(var i=0;i<url.length;i++){
+					imgarr.push(url[i].image)
+				}
+				console.log(imgarr)
+				uni.previewImage({
+					urls: imgarr
+				});
+			},
+		},
+		onReachBottom() {
+			this.page++
+			this.getAftersale(Number(this.imports))
+		}
+	}
+</script>
+<style lang="scss">
+	.search_top_input{
+		width: 80%;
+		height: 54rpx;
+		background-color: #E4E4E4;
+		border-radius: 27rpx;
+		position: absolute;
+		top: 18rpx;
+		right: 18rpx;
+		padding-top: 8rpx;
+		box-sizing: border-box;
+		input{
+			width: 85%;
+			text-indent: 1rem;
+			font-size: 26rpx;
+		}
+		.icon{
+			position: absolute;
+			top: 8rpx;
+			right: 26rpx;
+		}
+	}
+	.aftersaleinfo{
+		width: 100%;
+		position: relative;
+		top: 98px;
+		height: 100rpx;
+		text-align: center;
+		line-height: 100rpx;
+		font-size: 32rpx;
+	}
+	.aftersale {
+		width: 100%;
+		// margin-top: 20rpx;
+		position: relative;
+		top: 98px;
+	
+		.aftersale_item {
+			width: 90%;
+			margin: 0 auto 30rpx;
+			box-shadow: 0 0 10rpx #bcb9ca;
+			padding: 30rpx 20rpx 20rpx;
+			position: relative;
+			box-sizing: border-box;
+			.aftersale_item_title {
+				width: 100%;
+	
+				span {
+					margin-left: 16rpx;
+					font-weight: 700;
+				}
+			}
+	
+			.aftersale_item_con {
+				width: 92%;
+				margin-left: 8%;
+				margin-top: 20rpx;
+	
+				p {
+					height: 48rpx;
+					font-size: 24rpx;
+					color: #BEBEBE;
+				}
+			}
+	
+			.aftersale_item_operate {
+				width: 70%;
+				display: flex;
+				margin: 18rpx 0 0 30%;
+	
+				button {
+					width: 130rpx;
+					padding: 0;
+					font-size: 24rpx;
+					color: #FFFFFF;
+				}
+	
+				.fault {
+					background-color: #F78E01;
+				}
+	
+				.imgs {
+					background-color: #71CD9A;
+				}
+	
+				.video {
+					background-color: #53C6E6;
+				}
+	
+				.none {
+					background-color: #F3F3F3;
+					color: #B4B4B4;
+				}
+			}
+	
+			.aftersale_item_icon {
+				position: absolute;
+				top: 0;
+				right: 36rpx;
+	
+				image {
+					width: 68rpx;
+					height: 64rpx;
+				}
+			}
+		}
+	}
+	.model {
+		width: 90%;
+		.model_box {
+			width: 90%;
+			margin: 20rpx auto 48rpx;
+			display: flex;
+			justify-content: center;
+		}
+	}
+</style>
+

+ 4 - 4
pages/cb/bzy/equip-set/bzyhistoryile.vue

@@ -130,11 +130,11 @@
 					var xtitle = []
 					for (var i = 0; i < res.length; i++) {
 						var times = new Date(res[i].addtime * 1000)
-						xtitle.unshift(times.getMonth() + 1 + "/" + times.getDate() + "-" + times.getHours() + ":" +
+						xtitle.push(times.getMonth() + 1 + "/" + times.getDate() + "-" + times.getHours() + ":" +
 							times.getMinutes())
-						arr1.unshift(res[i].temperature == "" ? "0" : res[i].temperature)
-						arr2.unshift(res[i].humidity == "" ? "0" : res[i].humidity)
-						arr3.unshift(res[i].others == "" ? "0" : res[i].others)
+						arr1.push(res[i].temperature == "" ? "0" : res[i].temperature)
+						arr2.push(res[i].humidity == "" ? "0" : res[i].humidity)
+						arr3.push(res[i].others == "" ? "0" : res[i].others)
 					}
 					var obj = [{
 						name: '温度',

+ 2 - 2
pages/cb/bzy/equip-set/equip-set.vue

@@ -67,7 +67,7 @@
 			</view>
 			<text class="line">-</text>
 			<view class="uni-list-cell time" @click="selectTime('et2')">
-				<text>{{coll_time.time04||'开始时间'}}</text>
+				<text>{{coll_time.time04||'结束时间'}}</text>
 				<u-icon name="clock"></u-icon>
 			</view>
 		</view>
@@ -78,7 +78,7 @@
 			</view>
 			<text class="line">-</text>
 			<view class="uni-list-cell time" @click="selectTime('et3')">
-				<text>{{coll_time.time06||'开始时间'}}</text>
+				<text>{{coll_time.time06||'结束时间'}}</text>
 				<u-icon name="clock"></u-icon>
 			</view>
 		</view>

+ 819 - 0
pages/cb/cbd/equip-set/analyse.vue

@@ -0,0 +1,819 @@
+<template>
+	<view class="anabox">
+		<view class="timebox">
+			<view class="schedulebox">
+				<view class="schedule" @click="pickertfone=!pickertfone">
+					<p class="schedule_value">{{yservalue}}</p>
+					<!-- {{titletext[indexone]}} -->
+					<p class="schedule_icon">
+						<u-icon name="arrow-down"></u-icon>
+					</p>
+				</view>
+				<u-picker v-model="pickertfone" mode="selector" @confirm="confirmFun" :default-selector="[yserindex]"
+					:range="yearlist"></u-picker>
+				<view class="schedule" @click="pickertfworm=!pickertfworm">
+					<p class="schedule_value">{{wormvalue}}</p>
+					<!-- {{titletext[indexone]}} -->
+					<p class="schedule_icon">
+						<u-icon name="arrow-down"></u-icon>
+					</p>
+				</view>
+				<u-picker v-model="pickertfworm" mode="selector" @confirm="confirmFun2" :default-selector="[wormindex]"
+					:range="wormlist"></u-picker>
+			</view>
+			<view class="wormtime">
+				<view class="wormtime_item">
+					<image src="../../../../static/images/cb/shijianqi.png" mode="" class="img"></image>
+					<p>始见期</p>
+					<p>{{timeobj.startTime}}</p>
+				</view>
+				<view class="wormtime_item">
+					<image src="../../../../static/images/cb/gaofengqi.png" mode="" class="img"></image>
+					<p>高峰期</p>
+					<p>{{timeobj.highTime}}</p>
+					<p>数量:{{timeobj.highNum}}头</p>
+				</view>
+				<view class="wormtime_item">
+					<image src="../../../../static/images/cb/zhongjianqi.png" mode="" class="img"></image>
+					<p>终见期</p>
+					<p>{{timeobj.endTime}}</p>
+				</view>
+			</view>
+			<view class="selecttimes" @click="tiemshow=!tiemshow">
+				<view class="" style="line-height: 28px;">
+					时间选择器
+				</view>
+				<view class="timesbox">
+					<!-- <image
+						:src="'http://www.hnyfwlw.com:8006/bigdata_app'+'/image/prevention/1acfe2751c01d3786cdc49b83d7e505.png'"
+						mode=""></image> -->
+					<p>{{timetab(oldtime)}}</p>
+					<p class="or">至</p>
+					<p>{{timetab(newtime)}}</p>
+					<!-- <u-icon name="rili" custom-prefix="custom-icon" class="icon"></u-icon> -->
+				</view>
+				<u-calendar v-model="tiemshow" mode="range" @change="tiemchange"></u-calendar>
+			</view>
+			<view class="tendency">
+				<canvas canvas-id="canvasColumnA" id="canvasColumnA" class="charts" @touchstart="touchLineA($event)"
+					@touchmove="moveLineA($event)" @touchend="touchEndLineA($event)" disable-scroll=true
+					:style="{'width':cWidth*pixelRatio+'px','height':cHeight*pixelRatio+'px', 'transform': 'scale('+(1/pixelRatio)+')','margin-left':-cWidth*(pixelRatio-1)/2+'px','margin-top':-cHeight*(pixelRatio-1)/2+'px'}"></canvas>
+			</view>
+			<view class="tendency">
+				<canvas canvas-id="canvasRing" id="canvasRing" class="charts" @touchstart="touchRing"
+					:style="{'width':cWidth*pixelRatio+'px','height':cHeight*pixelRatio+'px', 'transform': 'scale('+(1/pixelRatio)+')','margin-left':-cWidth*(pixelRatio-1)/2+'px','margin-top':-cHeight*(pixelRatio-1)/2+'px'}"></canvas>
+			</view>
+			<view class="tendency_pro">
+				<view class="" v-for="(item,index) in progresslist">
+					<span>{{index+1}}、{{item.name}}</span>
+					<u-line-progress :active-color="colorlist[index%6]"
+						:percent="Number((item.data/pestsum*100).toFixed(2))" :show-percent="false"></u-line-progress>
+					<span>{{Number((item.data/pestsum*100).toFixed(2))}}%</span>
+				</view>
+			</view>
+			<view class="tablebox">
+				<view class="top_text">
+					<view :class="topindex==index?'title_text_color':'tltle_text'" v-for="(item,index) in toptext"
+						:key="index" @click="changeindex(index)">
+						<span class="title_item">
+							{{item}}
+						</span>
+					</view>
+				</view>
+				<scroll-view scroll-top="0" scroll-x="true" class="scroll-X">
+					<table class="table" v-if="topindex==0">
+						<tr class="tr">
+							<th class="th" v-for="(item,index) in thdata" :key="'a'+index">{{item}}</th>
+						</tr>
+						<tr class="tr" v-for="(items,indexs) in eqlistdata" :key="indexs">
+							<td class="td">{{items.deviceId}}</td>
+							<td class="td">{{items.deviceName}}</td>
+							<td class="td" @click="wormdetails(items.pest_dict)">{{items.pestName}}</td>
+							<td class="td">{{items.addtime|timeFormat()}}</td>
+							<td class="td">{{items.location}}</td>
+							<td class="td" @click="examine(items.indentify_photo)">查看</td>
+						</tr>
+						<tr class="tr" v-if="forbidden1">
+							<td class="td" v-for="item in 6">暂无数据</td>
+						</tr>
+					</table>
+					<table class="table2" v-else>
+						<tr class="tr">
+							<th class="th" v-for="(item,index) in thdata2" :key="'a'+index">{{item}}</th>
+						</tr>
+						<tr class="tr" v-for="(items,indexs) in eqlistdata" :key="indexs">
+							<td class="td">{{items.pest_name}}</td>
+							<td class="td">{{items.pest_num}}</td>
+							<td class="td">{{items.addtime|timeFormat()}}</td>
+						</tr>
+						<tr class="tr" v-if="forbidden2">
+							<td class="td" v-for="item in 6">暂无数据</td>
+						</tr>
+					</table>
+				</scroll-view>
+				<view class="pagenumber">
+					<button @click="prev" :disabled=" page == 1 ">上一页</button>
+					<view class="pagenumber_page">
+						第{{page}}页
+					</view>
+					<view class="pagenumber_page">
+						共 {{pagesum}} 页
+					</view>
+					<button @click="next" :disabled=" page == pagesum ">下一页</button>
+				</view>
+			</view>
+			<u-modal v-model="show" :mask-close-able="true" title="24小时数据">
+				<view class="modalbox">
+					<p v-for="(item,key) in pest_dict">{{key}}--{{pest_dict[key]}}头</p>
+				</view>
+			</u-modal>
+		</view>
+	</view>
+</template>
+
+<script>
+	import uCharts from '../../../../components/js_sdk/u-charts/u-charts/u-charts.js';
+	var canvaColumnA = null;
+	var canvasRing = null;
+	export default {
+		data() {
+			return {
+				d_id: "",
+				oldtime: "",
+				newtime: "",
+				tiemshow: false,
+				cWidth: '350',
+				cHeight: '350',
+				pixelRatio: 1,
+				pickertfone: false,
+				yservalue: "",
+				yearlist: [],
+				yserindex: "",
+				pickertfworm: false,
+				wormvalue: "",
+				wormlist: [],
+				wormindex: "",
+				timeobj: {
+					endTime: "",
+					highNum: "",
+					highTime: "",
+					startTime: "",
+				},
+				progresslist: [],
+				reslist: {
+					char_data: {},
+					at_ah_info: []
+				},
+				pestsum: 0,
+				colorlist: ["rgb(24, 144, 255)", "rgb(47, 194, 91)", "rgb(250, 204, 20)", "rgb(240, 72, 100)",
+					"rgb(133, 67, 224)", "rgb(144, 237, 125)"
+				],
+				page: 1,
+				pagesum: 1,
+				eqlistdata: [],
+				thdata: [
+					"设备ID", "设备名称", "害虫名称", "上报时间", "设备位置", "图像"
+				],
+				thdata2: [
+					"害虫名称", "害虫数量", "上报时间"
+				],
+				topindex: 0,
+				toptext: ["图像溯源", "虫害基础数据"],
+				forbidden1: false,
+				forbidden2: false,
+				show: false,
+				pest_dict: {}
+			}
+		},
+		methods: {
+			getyear() {
+				var Year = new Date().getFullYear();
+				var num = Year - 2019;
+				for (var i = 0; i < num + 1; i++) {
+					this.yearlist.push(2019 + i);
+				}
+				this.yservalue = this.yearlist[this.yearlist.length - 1];
+				this.yserindex = this.yearlist.length - 1
+				this.getwormtime()
+			},
+			async getwormtime() {
+				const res = await this.$myRequest({
+					url: '/api/api_gateway?method=forecast.worm_lamp.pest_raise_info',
+					data: {
+						d_ids: this.d_id,
+						identify_model: 'A',
+						year: this.yservalue,
+					}
+				})
+				console.log(res)
+				this.wormlist = res.pest_list
+				this.wormtimelist = res.pest_info
+				this.wormvalue = this.wormlist[0]
+				this.wormindex = 0
+				if (this.wormvalue) {
+					this.timeobj = this.wormtimelist[this.wormvalue]
+				}
+				console.log(this.timeobj)
+
+			},
+			confirmFun(e) {
+				console.log(e)
+				this.yserindex = e[0]
+				this.yservalue = this.yearlist[e[0]]
+				this.getwormtime()
+			},
+			confirmFun2(e) {
+				console.log(e)
+				this.wormindex = e[0]
+				this.wormvalue = this.wormlist[e[0]]
+				this.timeobj = this.wormtimelist[this.wormvalue]
+				this.setlineoption()
+			},
+			async getwormline() {
+				const res = await this.$myRequest({
+					url: '/api/api_gateway?method=forecast.worm_lamp.pest_statistics_char_new',
+					data: {
+						d_ids: this.d_id,
+						identify_model: 'A',
+						start_time: this.oldtime,
+						end_time: this.newtime
+					}
+				})
+				// console.log(res)
+				this.reslist.char_data = res.char_data
+				this.reslist.at_ah_info = res.at_ah_info
+				var ringarr = []
+
+				if (this.checkObj(res.pest_total)) {
+					for (var key in res.pest_total) {
+						var nameobj = {
+							name: '',
+							data: "",
+						}
+						// console.log(key)
+						nameobj.name = key
+						nameobj.data = res.pest_total[key]
+						ringarr.push(nameobj)
+					}
+				}
+				this.setlineoption()
+				// this.showRing(ringarr)
+				var num = 0
+				for (var i = 0; i < ringarr.length - 5; i++) {
+					console.log(ringarr[i].name)
+					num += ringarr[i].data
+				}
+				this.pestsum = 0
+				for (var i = 0; i < ringarr.length; i++) {
+					this.pestsum += ringarr[i].data
+				}
+				var sumobj = {
+					name: "其他",
+					data: num,
+				}
+				var ringarr2 = ringarr.slice(ringarr.length - 5)
+				ringarr2.unshift(sumobj)
+				// console.log(ringarr2)
+				this.showRing(ringarr2)
+				console.log(ringarr)
+				this.progresslist = ringarr
+			},
+			setlineoption() {
+				var res = this.reslist
+				var xtitle = []
+				var obj = []
+				if (res.at_ah_info.length != 0) {
+					var aharr = []
+					var atarr = []
+					for (var i = 0; i < res.at_ah_info.length; i++) {
+						var times = new Date(res.at_ah_info[i].addtime * 1000)
+						xtitle.push(times.getMonth() + 1 + "/" + times.getDate() + "-" + times.getHours() + ":" +
+							times.getSeconds())
+						atarr.push(res.at_ah_info[i].at == "" ? "0" : res.at_ah_info[i].at)
+						aharr.push(res.at_ah_info[i].ah == "" ? "0" : res.at_ah_info[i].ah)
+					}
+					var atobj = {
+						name: '温度',
+						data: atarr,
+						color: '#00E29D'
+					}
+					var ahobj = {
+						name: '湿度',
+						data: aharr,
+						color: '#6CBBFF'
+					}
+					obj.push(atobj)
+					obj.push(ahobj)
+				}
+				// console.log(this.wormvalue)
+				if (this.checkObj(res.char_data)) {
+					for (var key in res.char_data) {
+						if (this.wormvalue == key) {
+							var wormobj = {
+								name: key,
+								data: [],
+							}
+							for (var i = 0; i < res.char_data[key].length; i++) {
+								wormobj.data.push(res.char_data[key][i].ah == "" ? "0" : res.char_data[key][i].sum)
+							}
+							obj.push(wormobj)
+						}
+					}
+
+				}
+				this.showColumn("canvasColumnA", xtitle, obj)
+			},
+			checkObj(obj) {
+				for (let i in obj) {
+					return true;
+				}
+				return false;
+			},
+			tiemchange(e) {
+				console.log(e)
+				this.oldtime = +new Date(e.startDate) / 1000 - 8 * 60 * 60
+				this.newtime = +new Date(e.endDate) / 1000 + 16 * 60 * 60 - 1
+				// newtime: "",
+				console.log(this.oldtime, this.newtime)
+				this.page = 1
+				this.getwormline()
+				if (this.topindex == 0) {
+					this.gettabledata()
+				} else if (this.topindex == 1) {
+					this.gettabledata2()
+				}
+			},
+			timetab(e) {
+				e = new Date(e * 1000)
+				var year = e.getFullYear()
+				var month = e.getMonth() + 1 < 10 ? "0" + (e.getMonth() + 1) : e.getMonth() + 1
+				var day = e.getDate() < 10 ? "0" + e.getDate() : e.getDate()
+				var time = year + "/" + month + "/" + day
+				return time
+			},
+			showColumn(id, xtitle, xinfo) {
+				var _self = this
+				canvaColumnA = new uCharts({
+					canvasId: id,
+					type: 'line',
+					legend: {
+						position: "top"
+					},
+					fontSize: 11,
+					background: '#FFFFFF',
+					pixelRatio: 1,
+					animation: true,
+					dataLabel: false,
+					categories: xtitle,
+					series: xinfo,
+					enableScroll: true, //开启图表拖拽功能
+					xAxis: {
+						disableGrid: true,
+						type: 'grid',
+						gridType: 'dash',
+						itemCount: 5, //x轴单屏显示数据的数量,默认为5个
+						scrollShow: true, //新增是否显示滚动条,默认false
+						// scrollAlign: 'left', //滚动条初始位置
+						scrollBackgroundColor: '#F7F7FF', //默认为 #EFEBEF
+						scrollColor: '#DEE7F7', //默认为 #A6A6A6
+					},
+					yAxis: {},
+					width: _self.cWidth * 1,
+					height: _self.cHeight * 1,
+					extra: {
+						line: {
+							type: 'curve'
+						}
+					}
+				});
+			},
+			touchLineA(e) {
+				console.log(e)
+				canvaColumnA.scrollStart(e);
+			},
+			moveLineA(e) {
+				canvaColumnA.scroll(e);
+			},
+			touchEndLineA(e) {
+				canvaColumnA.scrollEnd(e);
+				//下面是toolTip事件,如果滚动后不需要显示,可不填写
+				canvaColumnA.showToolTip(e, {
+					format: function(item, category) {
+						return category + ' ' + item.name + ':' + item.data
+					}
+				});
+			},
+			showRing(data) {
+				var _self = this
+				canvasRing = new uCharts({
+					canvasId: "canvasRing",
+					type: 'ring',
+					fontSize: 11,
+					legend: {
+						show: true,
+					},
+					extra: {
+						pie: {
+							offsetAngle: -45,
+							ringWidth: 40 * _self.pixelRatio,
+							labelWidth: 15
+						}
+					},
+					background: '#FFFFFF',
+					pixelRatio: _self.pixelRatio,
+					series: data,
+					animation: true,
+					width: _self.cWidth * _self.pixelRatio,
+					height: _self.cHeight * _self.pixelRatio,
+					disablePieStroke: true,
+					dataLabel: true,
+				});
+			},
+			touchRing(e) {
+				canvasRing.showToolTip(e, {
+					format: function(item) {
+						return item.name + ':' + item.data
+					}
+				});
+			},
+			tap(e) {
+				canvasgroup[e.target.id].touchLegend(e);
+				canvasgroup[e.target.id].showToolTip(e);
+			},
+			async gettabledata() {
+				const res = await this.$myRequest({
+					url: '/api/api_gateway?method=forecast.worm_lamp.pest_image_source',
+					data: {
+						d_ids: this.d_id,
+						identify_model: 'A',
+						start_time: this.oldtime,
+						end_time: this.newtime,
+						page: this.page
+					}
+				})
+				this.pagesum = Math.ceil(res.total_count / 10)
+				this.eqlistdata = res.pest_image_data
+				if (this.eqlistdata.length == 0) {
+					this.forbidden1 = true
+				} else {
+					this.forbidden1 = false
+				}
+				console.log(res)
+			},
+			async gettabledata2() {
+				const res = await this.$myRequest({
+					url: '/api/api_gateway?method=forecast.worm_lamp.pest_base_data',
+					data: {
+						d_ids: this.d_id,
+						identify_model: 'A',
+						start_time: this.oldtime,
+						end_time: this.newtime,
+						page: this.page
+					}
+				})
+				this.pagesum = Math.ceil(res.total_count / 10)
+				this.eqlistdata = res.pest_image_data
+				if (this.eqlistdata.length == 0) {
+					this.forbidden2 = true
+				} else {
+					this.forbidden2 = false
+				}
+				console.log(res)
+			},
+			changeindex(e) {
+				this.topindex = e
+				this.page = 1
+				if (e == 0) {
+					this.gettabledata()
+				} else if (e == 1) {
+					this.gettabledata2()
+				}
+			},
+			prev() {
+				this.page--
+				if (this.topindex == 0) {
+					this.gettabledata()
+				} else if (this.topindex == 1) {
+					this.gettabledata2()
+				}
+			},
+			next() {
+				this.page++
+				if (this.topindex == 0) {
+					this.gettabledata()
+				} else if (this.topindex == 1) {
+					this.gettabledata2()
+				}
+			},
+			wormdetails(data) {
+				console.log(data)
+				this.show = true
+				this.pest_dict = data
+			},
+			examine(url) {
+				var imgarr = [url]
+				uni.previewImage({
+					urls: imgarr,
+					current: 0
+				});
+			},
+		},
+		onLoad(option) {
+			this.d_id = option.d_id
+			var date = +new Date() / 1000
+			this.oldtime = Math.floor(date - 24 * 60 * 60)
+			this.newtime = Math.floor(date)
+			this.cWidth = uni.upx2px(650);
+			this.cHeight = uni.upx2px(500);
+			this.getyear()
+			this.$nextTick(() => {
+				this.getwormline()
+				if (this.topindex == 0) {
+					this.gettabledata()
+				} else if (this.topindex == 1) {
+					this.gettabledata2()
+				}
+			}, 500)
+		}
+	}
+</script>
+
+<style lang="scss">
+	.anabox {
+		background-color: #f1f4ff;
+		padding-top: 10px;
+	}
+
+	.selecttimes {
+		// box-shadow: 0 0 10rpx #bcb9ca;
+		// padding: 10rpx 20rpx;
+		padding: 10px;
+		box-sizing: border-box;
+		margin: 10px auto 0;
+		display: flex;
+		background-color: #fff;
+		width: 95%;
+		.timesbox {
+			display: flex;
+			justify-content: space-around;
+			width: 60%;
+			margin-left: 10px;
+			border: 1px solid #CCCCCC;
+			padding: 5px;
+			font-size: 12px;
+			border-radius: 5px;
+			image {
+				width: 30rpx;
+				height: 30rpx;
+				margin-top: 6rpx;
+			}
+
+			.icon {
+				color: #949494;
+				text-align: right;
+				margin-left: 30rpx;
+
+			}
+		}
+	}
+
+	.wormtime {
+		width: 95%;
+		padding: 10px;
+		box-sizing: border-box;
+		margin: 0 auto;
+		// margin-top: 10px;
+		display: flex;
+		justify-content: space-around;
+		background-color: #fff;
+
+		.wormtime_item {
+			width: 25%;
+			margin-top: 10px;
+			padding: 10px;
+			.img {
+				width: 50px;
+				height: 50px;
+			}
+
+			p:nth-child(2) {
+				font-size: 16px;
+				font-weight: 700;
+			}
+			p:nth-child(3) {
+				font-size: 12px;
+				margin-top: 5px;
+			}
+			p:last-child {
+				font-size: 12px;
+				margin-top: 5px;
+			}
+		}
+
+		.wormtime_item:first-child {
+			background-color: #F9FAFE;
+		}
+
+		.wormtime_item:nth-child(2) {
+			background-color: #FFFCF9;
+		}
+
+		.wormtime_item:last-child {
+			background-color: #FCF8FF;
+		}
+	}
+
+	.schedulebox {
+		display: flex;
+		padding: 10px 10px;
+		box-sizing: border-box;
+		width: 95%;
+		// justify-content: space-around;
+		margin: 0px auto;
+		background-color: #fff;
+
+		.schedule {
+			display: flex;
+			width: 240rpx;
+			height: 50rpx;
+			// border: 2rpx solid #F0F0F0;
+			margin-right: 20rpx;
+			background-color: #F9FAFC;
+			border-radius: 25px;
+
+			.schedule_value {
+				width: 70%;
+				text-align: center;
+				line-height: 50rpx;
+				font-size: 24rpx;
+			}
+
+			.schedule_icon {
+				width: 30%;
+				// background-color: #F2F2F2;
+				text-align: center;
+				line-height: 50rpx;
+				/deep/.u-icon__icon{
+					color: rgba(0,0,0,0.3);
+				}
+			}
+		}
+	}
+
+	.tendency {
+		width: 95%;
+		display: flex;
+		justify-content: space-around;
+		margin: 0 auto;
+		background-color: #fff;
+	}
+
+	.tendency_pro {
+		width: 95%;
+		padding: 0 20px;
+		box-sizing: border-box;
+		height: 140px;
+		overflow-y: auto;
+		margin: 0 auto;
+		background-color: #fff;
+		span:first-child {
+			display: inline-block;
+			width: 100px;
+			overflow: hidden; //溢出隐藏
+			white-space: nowrap; //禁止换行
+			text-overflow: ellipsis; //...
+		}
+
+		.u-progress {
+			width: calc(100% - 150px);
+		}
+
+		span:last-child {
+			display: inline-block;
+			width: 30px;
+			margin-left: 10px;
+		}
+	}
+
+	.tablebox {
+		display: flex;
+		flex-wrap: wrap;
+		width: 95%;
+		margin: 10px auto 20px;
+		// box-shadow: 0 0 10rpx #bcb9ca;
+		background-color: #fff;
+		.top_text {
+			width: 100%;
+			display: flex;
+			height: 30px;
+			line-height: 30px;
+			.tltle_text {
+				width: 30%;
+				text-align: center;
+				// border: 2rpx solid #F0F0F0;
+				// text-align: center;
+				// background-color: #F0F0F0;
+				// color: #000;
+			}
+
+			.title_text_color {
+				width: 30%;
+				text-align: center;
+				.title_item{
+					border-bottom: 2px solid #64CC82;
+					color: #64CC82;
+				}
+				// width: 50%;
+				// border: 2rpx solid #64CC82;
+				// background-color: #64CC82;
+				// color: #fff;
+				// text-align: center;
+			}
+		}
+
+		.scroll-X {
+			width: 95%;
+			margin: 20rpx auto;
+
+			.table {
+				width: 1800rpx;
+
+				.td:nth-child(3),
+				.td:last-child {
+					color: #37aed8;
+				}
+			}
+
+			.tr {
+				display: flex;
+				overflow: hidden;
+
+				.th,
+				.td {
+					display: inline-block;
+					padding: 5rpx;
+					text-align: center;
+					height: 52rpx;
+					line-height: 52rpx;
+					width: 320rpx;
+				}
+
+			}
+
+			.tr:nth-child(2n-1) {
+				background-color: #f5fff8;
+			}
+
+			.tr:first-child {
+				background-color: #57c878;
+				color: #fff;
+			}
+		}
+
+		.pagenumber {
+			display: flex;
+			margin: 20rpx auto;
+
+			button {
+				width: 150rpx;
+				height: 50rpx;
+				line-height: 50rpx;
+				font-size: 26rpx;
+				text-align: center;
+				background-color: #57c878;
+				color: #FFFFFF;
+			}
+
+			.pagenumber_page {
+				width: 150rpx;
+				height: 50rpx;
+				line-height: 50rpx;
+				font-size: 26rpx;
+				text-align: center;
+			}
+		}
+	}
+
+	.modalbox {
+		width: 100%;
+		// display: flex;
+		// flex-wrap: wrap;
+		height: 120px;
+		padding-left: 30px;
+		margin-top: 10px;
+		overflow-y: auto;
+
+		p {
+			// width: 50%;
+		}
+	}
+
+	/deep/.u-calendar__action {
+		display: flex;
+		justify-content: space-around;
+
+		.u-calendar__action__text {
+			line-height: 25px;
+		}
+	}
+</style>

+ 1 - 1
pages/cb/cbd/equip-set/equip-set.vue

@@ -110,7 +110,7 @@
 			低温保护阈值(℃)
 		</view>
 		<view class="">
-			<slider :value="equipContrlForm.tpl" show-value="true" :min="1" :max="10" @change="sliderChange($event,'tpl')" block-color="#57C878" activeColor="#57C878" step="1" />
+			<slider :value="equipContrlForm.tpl" show-value="true" :min="-30" :max="10" @change="sliderChange($event,'tpl')" block-color="#57C878" activeColor="#57C878" step="1" />
 		</view>
 		<view class="tit">
 			数据上传间隔(min)

+ 6 - 6
pages/cb/cbd/equip-set/historyfile.vue

@@ -32,8 +32,8 @@
 						</tr>
 						<tr class="tr" v-for="(items,indexs) in historylistdata" :key="'b'+indexs" v-if="!forbidden">
 							<td class="td">{{items.d_h_t.addtime|timeFormat()}}</td>
-							<td class="td">{{items.d_h_t.at==""||items.d_h_t.at=="25"||items.d_h_t.at=="25.0"||items.d_h_t.at=="2.5"?items.d_h_t.new_tem:items.d_h_t.at}}</td>
-							<td class="td">{{items.d_h_t.ah==""||items.d_h_t.ah=="30"||items.d_h_t.ah=="30.0"||items.d_h_t.ah=="3.0"?items.d_h_t.new_hum:items.d_h_t.ah}}</td>
+							<td class="td">{{items.d_h_t.at}}</td>
+							<td class="td">{{items.d_h_t.ah}}</td>
 							<td class="td">{{items.d_h_t.hrt}}</td>
 							<td class="td">{{items.d_h_t.rps==0?"正常":"雨控"}}</td>
 							<td class="td">{{items.d_h_t.tps==0?"正常":"温控"}}</td>
@@ -122,10 +122,10 @@
 					var xtitle = []
 					for (var i = 0; i < res.length; i++) {
 						var times = new Date(res[i].addtime * 1000)
-						xtitle.unshift(times.getMonth() + 1 + "/" + times.getDate() + "-" + times.getHours() + ":" + times.getMinutes())
-						arr1.unshift(res[i].temperature == "" ? "0" : res[i].temperature)
-						arr2.unshift(res[i].humidity == "" ? "0" : res[i].humidity)
-						arr3.unshift(res[i].others == "" ? "0" : res[i].others)
+						xtitle.push(times.getMonth() + 1 + "/" + times.getDate() + "-" + times.getHours() + ":" + times.getMinutes())
+						arr1.push(res[i].temperature == "" ? "0" : res[i].temperature)
+						arr2.push(res[i].humidity == "" ? "0" : res[i].humidity)
+						arr3.push(res[i].others == "" ? "0" : res[i].others)
 					}
 					// console.log(arr1)
 					var obj = [{

+ 76 - 59
pages/cb/cbd/equip-set/imgpage.vue

@@ -3,17 +3,10 @@
 		<view class="status_bar"></view>
 		<view class="" style="position: relative;top: 44px;">
 			<view style="position: fixed;z-index: 100;">
-				<uni-nav-bar @clickLeft="clickLeft" left-icon="back" title="查看图片" rightIcon="camera" @clickRight="clickRight"></uni-nav-bar>
+				<uni-nav-bar @clickLeft="clickLeft" left-icon="back" title="查看图片" rightIcon="camera"
+					@clickRight="clickRight"></uni-nav-bar>
 			</view>
 			<p class="tishi" v-if="tishi">暂无数据</p>
-			<!-- <view class="timeshow">
-				<view class="shuju_one_title">
-					<view :class="titleidnex==index?'title_text_color':'tltle_text'" v-for="(item,index) in titletext" :key="index"
-					 @click="changeindex(index)">
-						{{item}}
-					</view>
-				</view>
-			</view> -->
 			<view class="selecttimes" @click="tiemshow=!tiemshow">
 				<view class="timesbox">
 					<image
@@ -29,32 +22,35 @@
 			<view class="imglist">
 				<view class="imglist_box" v-for="(item,index) in imglists" :key="index">
 					<view class="imglist_left">
-						<image :src="'http://www.hnyfwlw.com:8006/bigdata_app'+'/image/cb/jiazai.ui.gif'" mode=""></image>
+						<image :src="'http://www.hnyfwlw.com:8006/bigdata_app'+'/image/cb/jiazai.ui.gif'" mode="">
+						</image>
 						<image :src="item.addr" mode="" @click="examine(index)"></image>
 					</view>
 					<view class="imglist_right">
 						<view class="icon_box" @click="delimg(item.id)">
 							<p class="iconfont icon-shanchu">删除</p>
 						</view>
-						<view class="icon_box" @click="shibie(item.id,item.addr)" v-if="disable==1 && device_type!=7">
+						<view class="icon_box" @click="shibie(item.id,item.addr)"
+							v-if="myuid == '4' || (disable==1 && device_type!=7)">
 							<p class="iconfont icon-shibie">识别</p>
 						</view>
 						<view class="icon_box" v-else-if="disable==2 && device_type!=7">
 							<p class="iconfont icon-shibie">计数:{{item.des_nums}}只</p>
 						</view>
-						<view class="icon_box" @click="tongji(item)" v-if="device_type!=7">
+						<!-- <view class="icon_box" @click="tongji(item)" v-if="device_type!=7">
 							<p class="iconfont icon-tongji2">手动统计</p>
 						</view>
 						<view class="icon_box" @click="add(item)" v-if="device_type!=7">
 							<p class="iconfont icon-iconzhengli_shouxieqianpi">手动添加</p>
-						</view>
+						</view> -->
 						<p style="color: #06B535;">{{item.addtime|timeFormat()}}</p>
 					</view>
 				</view>
 			</view>
 		</view>
 		<view class="top" v-if="isTop" @click="top">
-			<image :src="'http://www.hnyfwlw.com:8006/bigdata_app'+'/image/6209a98f0cb3b5086f2ca36152c9269.png'" mode=""></image>
+			<image :src="'http://www.hnyfwlw.com:8006/bigdata_app'+'/image/6209a98f0cb3b5086f2ca36152c9269.png'"
+				mode=""></image>
 		</view>
 	</view>
 </template>
@@ -78,28 +74,29 @@
 					minute: true,
 					second: false
 				},
-				flag:1,
-				self:true,
-				isTop:false,
-				resultdata:{},
+				flag: 1,
+				self: true,
+				isTop: false,
+				resultdata: {},
 				titletext: ["24小时", "近一个月", "近半年", "近一年"],
-				titleidnex:0,
-				tiemshow:false,//时间选择器
-				disable:"",
-				device_type:""
+				titleidnex: 0,
+				tiemshow: false, //时间选择器
+				disable: "",
+				device_type: "",
+				myuid:""
 			}
 		},
 		methods: {
 			//forecast.forecast_system.equip_photofo
-			async imglistdata(time_begin,time_end) { //获取图片列表
+			async imglistdata(time_begin, time_end) { //获取图片列表
 				const res = await this.$myRequest({
 					url: '/api/api_gateway?method=forecast.forecast_system.equip_photo',
 					data: {
 						device_id: this.device_id,
 						page: this.page,
 						ret: "list",
-						time_begin:time_begin,//开始时间
-						time_end:time_end,//结束时间
+						time_begin: time_begin, //开始时间
+						time_end: time_end, //结束时间
 					}
 				})
 				this.imglists = this.imglists.concat(res.data)
@@ -112,11 +109,12 @@
 			},
 			//forecast.forecast_system.equip_photo_del
 			async del(id) { //删除图片
+				var arr = [id]
 				const res = await this.$myRequest({
 					url: '/api/api_gateway?method=forecast.forecast_system.equip_photo_del',
 					data: {
 						device_id: this.device_id,
-						addrlist: id
+						addrlist: JSON.stringify(arr)
 					}
 				})
 				if (res) {
@@ -124,18 +122,20 @@
 						title: '指令下发成功!',
 						duration: 2000
 					});
-					this.imglistdata(parseInt(this.timestate),parseInt(this.timeend))
-				}else{
+					this.page = 1
+					this.imglists = []
+					this.imglistdata(parseInt(this.timestate), parseInt(this.timeend))
+				} else {
 					uni.showToast({
 						title: '指令下发失败!',
 						duration: 2000,
-						icon:"none"
+						icon: "none"
 					});
 				}
 			},
 			//forecast.forecast_system.equip_photo_species  pest_list
 			//forecast.forecast_system.equip_photo_species统计
-			
+
 			//forecast.send_control.admin_device_control 拍照 
 			async takephoto() { //拍照
 				const res = await this.$myRequest({
@@ -153,17 +153,17 @@
 						duration: 2000
 					});
 					var that = this
-					setTimeout(()=>{
-						that.imglistdata(parseInt(that.timestate),parseInt(that.timeend))
-					},1000)
-				}else{
+					setTimeout(() => {
+						that.imglistdata(parseInt(that.timestate), parseInt(that.timeend))
+					}, 1000)
+				} else {
 					uni.showToast({
 						title: '指令下发失败!',
 						duration: 2000,
-						icon:"none"
+						icon: "none"
 					});
 				}
-				
+
 			},
 			clickLeft() {
 				uni.navigateBack({
@@ -174,7 +174,7 @@
 				uni.showModal({
 					title: '提示',
 					content: '是否删除此图片?',
-					success: function(res) {
+					success: (res) => {
 						if (res.confirm) {
 							this.del(id)
 							console.log('用户点击确定');
@@ -184,31 +184,32 @@
 					}
 				});
 			},
-			shibie(id,addr) { //识别
+			shibie(id, addr) { //识别
 				// this.discern(id)
 				uni.navigateTo({
-					url: "./results?id="+id+"&addr="+addr
+					url: "./results?id=" + id + "&addr=" + addr
 				})
 			},
 			tongji(item) { //统计
 				// this.species(id)
 				uni.navigateTo({
-					url:"./manualinput?id="+item.id + "&device_id=" + item.device_id+"&addtime="+item.addtime
+					url: "./manualinput?id=" + item.id + "&device_id=" + item.device_id + "&addtime=" + item
+						.addtime
 				})
 			},
 			add(item) {
 				uni.navigateTo({
-					url: "./addimg?id=" + item.id + "&device_id=" + item.device_id+"&addtime="+item.addtime
+					url: "./addimg?id=" + item.id + "&device_id=" + item.device_id + "&addtime=" + item.addtime
 				})
 			},
 			examine(index) {
 				var imgarr = []
-				for(var i=0;i<this.imglists.length;i++){
+				for (var i = 0; i < this.imglists.length; i++) {
 					imgarr.push(this.imglists[i].addr)
 				}
 				uni.previewImage({
 					urls: imgarr,
-					current:index
+					current: index
 				});
 			},
 			clickRight() { //下发拍照指令
@@ -240,13 +241,13 @@
 			// 		this.imglistdata(parseInt(this.timestate),parseInt(this.timeend))
 			// 	}
 			// },
-			tiemchange(e){
-				this.imglists=[]
-				this.page =1
+			tiemchange(e) {
+				this.imglists = []
+				this.page = 1
 				console.log(e)
 				this.timestate = +new Date(e.startDate) / 1000 - 8 * 60 * 60
 				this.timeend = +new Date(e.endDate) / 1000 + 16 * 60 * 60
-				this.imglistdata(parseInt(this.timestate),parseInt(this.timeend))
+				this.imglistdata(parseInt(this.timestate), parseInt(this.timeend))
 			},
 			timetab(e) {
 				e = new Date(e * 1000)
@@ -258,24 +259,31 @@
 			},
 		},
 		onLoad(option) {
+			uni.getStorage({
+				key:"myuid",
+				success:(res)=> {
+					this.myuid = res.data
+					console.log(this.myuid)
+				}
+			})
 			this.timeend = +new Date() / 1000
 			this.timestate = this.timeend - 60 * 60 * 24
 			console.log(option)
 			this.device_id = option.device_id
 			this.d_id = option.d_id
-			this.imglists=[]
+			this.imglists = []
 			this.disable = option.disable
 			this.device_type = option.device_type
 			console.log(this.timestate)
-			this.imglistdata(parseInt(this.timestate),parseInt(this.timeend))
+			this.imglistdata(parseInt(this.timestate), parseInt(this.timeend))
 		},
-		onShow(){
-			
+		onShow() {
+
 		},
 		onReachBottom() {
 			this.page++
 			console.log(this.timestate)
-			this.imglistdata(parseInt(this.timestate),parseInt(this.timeend))
+			this.imglistdata(parseInt(this.timestate), parseInt(this.timeend))
 		},
 		onPageScroll(e) { //nvue暂不支持滚动监听,可用bindingx代替
 			if (e.scrollTop > 200) { //距离大于200时显示
@@ -296,6 +304,7 @@
 		text-align: center;
 		font-size: 40rpx;
 	}
+
 	.selecttimes {
 		width: 100%;
 		position: fixed;
@@ -304,6 +313,7 @@
 		z-index: 100;
 		background-color: #fff;
 		padding-top: 30rpx;
+
 		.timesbox {
 			display: flex;
 			width: 95%;
@@ -312,28 +322,31 @@
 			box-shadow: 0 0 10rpx #bcb9ca;
 			padding: 10rpx 20rpx;
 			box-sizing: border-box;
+
 			image {
 				width: 30rpx;
 				height: 30rpx;
 				margin-top: 6rpx;
 			}
-	
+
 			.icon {
 				color: #949494;
 				text-align: right;
 				margin-left: 30rpx;
-	
+
 			}
 		}
+
 		/deep/.u-calendar__action {
 			display: flex;
 			justify-content: space-around;
-		
+
 			.u-calendar__action__text {
 				line-height: 25px;
 			}
 		}
 	}
+
 	.timeshow {
 		width: 96%;
 		height: 50rpx;
@@ -344,12 +357,12 @@
 		display: flex;
 		z-index: 100;
 		padding-top: 10px;
-		
+
 		.shuju_one_title {
 			width: 70%;
 			margin: 0 auto;
 			display: flex;
-		
+
 			.tltle_text {
 				width: 25%;
 				border: 2rpx solid #B2B2B2;
@@ -359,7 +372,7 @@
 				height: 50rpx;
 				line-height: 50rpx;
 			}
-		
+
 			.title_text_color {
 				width: 25%;
 				border: 2rpx solid #28AE4F;
@@ -370,6 +383,7 @@
 				line-height: 50rpx;
 			}
 		}
+
 		.timeshow_tate,
 		.timeshow_end {
 			height: 50rpx;
@@ -381,6 +395,7 @@
 			color: #FFFFFF;
 		}
 	}
+
 	.imglist {
 		position: absolute;
 		top: 100px;
@@ -429,12 +444,14 @@
 
 		}
 	}
+
 	.top {
 		position: fixed;
 		right: 30px;
 		bottom: 100px;
 		z-index: 100;
-		image{
+
+		image {
 			width: 100rpx;
 			height: 100rpx;
 		}

+ 75 - 30
pages/cb/cbd/equip-set/results.vue

@@ -3,7 +3,8 @@
 		<view class="images_box">
 			<p class="title">图片标记</p>
 			<view class="images">
-				<image :src="'http://www.hnyfwlw.com:8006/bigdata_app'+'/image/cb/jiazai.ui.gif'" mode="" class="jiazai"></image>
+				<image :src="'http://www.hnyfwlw.com:8006/bigdata_app'+'/image/cb/jiazai.ui.gif'" mode=""
+					class="jiazai"></image>
 				<image :src="resuils.image" mode="" @click="examine(resuils)"></image>
 				<view class="imgbg" v-if="imgbg">
 					<image src="../../../../static/images/cb/6286299.gif" mode="" class="img"></image>
@@ -24,51 +25,82 @@
 </template>
 
 <script>
+	import jsencrypt from '@/components/jsencrypt/jsencrypt.vue';
+	import insect_dict from "../../../../static/data/cbd_pest_library.js"
 	export default {
 		data() {
 			return {
-				resuils:{
-					image:""
+				resuils: {
+					image: ""
 				},
-				id:"",
-				imgbg:false,
+				id: "",
+				imgbg: false,
 			}
 		},
 		methods: {
-			//forecast.forecast_system.equip_photo_discern识别 see again
+			//forecast.forecast_system.equip_photo_discern识别 see again\
 			async discern(ret) { //识别图片
+				var publiukey = `-----BEGIN PUBLIC KEY-----
+			MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6m92fXUrccS4SoLg4W4jPRNua
+			4BcRk4ldLcqPuQpD2Mds2+hw+Gi+0MUnshF/r/DTcCJgkt7rtoY9EB6/XJ6MFw14
+			whhESFie/lZUWRsk8M89Rkr8m5rwmBl+uLAd5LopyshFqKTBXeT2ytHP1JCQLPBO
+			34Fy4/yEz4qEzkzBuwIDAQAB
+			-----END PUBLIC KEY-----`;
+				var time = +new Date();
+				var str2 = 'YuNfEi' + time + 'YuNfEi'
+				var pubblicData = jsencrypt.setEncrypt(publiukey, str2);
 				const res = await this.$myRequest({
 					url: '/api/api_gateway?method=forecast.forecast_system.equip_photo_discern',
 					data: {
 						img_id: this.id,
 						ret: ret,
 						device_type: "cbd",
-						identify_model: "A"
+						identify_model: "A",
+						sign: pubblicData
 					},
 				})
 				console.log(res)
-				if(res){
-					this.resuils = res
-					this.imgbg =false
+				if (res) {
+					if (ret == "see") {
+						this.resuils = res
+					} else if (ret == "again") {
+						// this.resuils.result
+						// console.log(insect_dict)
+						this.resuils.result = []
+						var arr = res.result.split("#")
+						for (var i = 0; i < arr.length; i++) {
+							arr[i] = arr[i].split(",")
+							var obj = {
+								number: arr[i][0],
+								nums: arr[i][1],
+								result_list: insect_dict[arr[i][0]]
+							}
+							this.resuils.result.push(obj)
+						}
+						console.log(arr)
+						// var obj
+					}
+
+					this.imgbg = false
 					uni.showToast({
 						title: '识别成功!',
 						duration: 2000
 					});
-				}else{
+				} else {
 					this.resuils.image = this.addr
 					console.log(this.resuils)
 					this.imgbg = false
 					uni.showToast({
 						title: '识别无结果!',
 						duration: 2000,
-						icon:"none"
+						icon: "none"
 					});
-					
+
 				}
 			},
-			anew(){
+			anew() {
 				this.discern("again")
-				this.imgbg =true
+				this.imgbg = true
 			},
 			examine(url) {
 				console.log(url)
@@ -89,27 +121,31 @@
 </script>
 
 <style lang="scss">
-	.images_box{
+	.images_box {
 		width: 90%;
 		margin: 0 auto;
 		padding-top: 20rpx;
-		.title{
+
+		.title {
 			border-left: 10rpx solid #71cd9a;
 			padding-left: 20rpx;
 			font-size: 30rpx;
 		}
-		.images{
+
+		.images {
 			margin: 20rpx 0;
 			width: 100%;
 			height: 480rpx;
 			position: relative;
-			image{
+
+			image {
 				width: 100%;
 				position: absolute;
 				top: 0;
 				left: 0;
 			}
-			.jiazai{
+
+			.jiazai {
 				width: 480rpx;
 				height: 400rpx;
 				position: absolute;
@@ -118,14 +154,16 @@
 				margin-top: -240rpx;
 				margin-left: -240rpx;
 			}
-			.imgbg{
+
+			.imgbg {
 				width: 100%;
 				height: 480rpx;
 				position: absolute;
 				top: 0;
 				left: 0;
-				background-color: rgba(0,0,0,0.5);
-				.img{
+				background-color: rgba(0, 0, 0, 0.5);
+
+				.img {
 					width: 430rpx;
 					height: 400rpx;
 					position: absolute;
@@ -136,11 +174,13 @@
 				}
 			}
 		}
-		.btn{
+
+		.btn {
 			width: 100%;
 			display: flex;
 			justify-content: flex-end;
-			.btn_box{
+
+			.btn_box {
 				width: 200rpx;
 				height: 60rpx;
 				background-color: #fbb40a;
@@ -151,24 +191,29 @@
 			}
 		}
 	}
-	.information{
+
+	.information {
 		width: 97%;
 		margin: 0 auto;
 		padding-top: 20rpx;
-		.title{
+
+		.title {
 			border-left: 10rpx solid #71cd9a;
 			padding-left: 20rpx;
 			font-size: 30rpx;
 		}
-		.information_data{
+
+		.information_data {
 			margin: 30rpx;
 			display: flex;
 			box-shadow: 0 0 10rpx #e8e5f7;
 			padding: 20rpx 10rpx;
-			p{
+
+			p {
 				margin-right: 20rpx;
 				font-size: 28rpx;
-				span{
+
+				span {
 					color: #FF0000;
 				}
 			}

+ 50 - 5
pages/cb/equip-detail/equip-detail.vue

@@ -23,10 +23,28 @@
 				<text space="emsp">载玻片、培养液更换时间</text>
 				<u-icon name="edit-pen" color="#f0ad4e" size="28"></u-icon>
 			</view>
+			<view v-if="type==7">
+				<text space="emsp">
+					<span :class="{'red': equipInfo.status_glass == 2 || equipInfo.status_glass == 1 }">
+						{{ glass_slide_timeTime(equipInfo.status_glass)}} </span>
+					<span style="margin: 0 10px;">|</span>
+					<span :class="{'red': equipInfo.status_cul == 2 || equipInfo.status_cul == 1 }">
+						{{ cultivateTime(equipInfo.status_cul) }} </span>
+				</text>
+			</view>
 			<view v-if="type==4" @click="addYx(equipInfo.d_id)">
 				<text space="emsp">添加诱芯</text>
+				<text style="margin: 0 10px;">{{equipInfo.decoy||"暂无"}}</text>
 				<u-icon name="edit-pen" color="#f0ad4e" size="28"></u-icon>
 			</view>
+			<view v-if="type==4">
+				<text space="emsp">诱芯更新时间</text>
+				<text style="margin: 0 10px;">{{equipInfo.xy_uptime}}</text>
+			</view>
+			<view v-if="type==4">
+				<text space="emsp">诱芯到期时间</text>
+				<text style="margin: 0 10px;">{{equipInfo.xy_expire}}</text>
+			</view>
 			<u-popup v-model="setTimeShow" mode="center" width="600rpx">
 				<u-field label="载玻片更换时间" placeholder="选择日期" label-width='240' required :error-message="glassErr"
 					v-model="glass_slide_time" @click="glass_show=true" :field-style="fieldstyle" disabled>
@@ -127,9 +145,9 @@
 					},
 					{
 						icon: '/image/cb/3.png',
-						tex: '害虫统计',
-						path: '/pages/cb/cbd/equip-set/statistics',
-						tf: true
+						tex: '害虫分析',
+						path: '/pages/cb/cbd/equip-set/analyse',
+						tf: false
 					}, {
 						icon: '/image/cb/4.png',
 						tex: '设备控制',
@@ -239,7 +257,7 @@
 									blbs = "异常";
 								} else if (equipState.lux == 0) {
 									blbs = "N/A(未检测到传感器)";
-								} else if (this.newState.lamp == 0){
+								} else if (this.newState.lamp == 0) {
 									blbs = "工作";
 								}
 							} else {
@@ -509,7 +527,7 @@
 							case 62:
 								this.cbd[2].tf = true //"设备控制"
 								break
-							case 63:
+							case 163:
 								this.cbd[1].tf = true //"害虫统计"
 								break
 						}
@@ -722,6 +740,29 @@
 					}
 				});
 			},
+			glass_slide_timeTime(date) {
+				if (date === 0) {
+					return "载玻片未到期";
+				} else if (date == 1) {
+					return "载玻片已到期";
+				} else if (date == 2) {
+					return "载玻片即将到期";
+				} else if (date === "") {
+					return "请设置培养液时间";
+				}
+			},
+			cultivateTime(date) {
+				console.log(date);
+				if (date === 0) {
+					return "培养液未到期";
+				} else if (date == 1) {
+					return "培养液已到期";
+				} else if (date == 2) {
+					return "培养液即将到期";
+				} else if (date === "") {
+					return "请设置培养液时间";
+				}
+			}
 		},
 	}
 </script>
@@ -888,4 +929,8 @@
 			line-height: 25px;
 		}
 	}
+
+	.red {
+		color: rgb(235, 103, 101);
+	}
 </style>

+ 1 - 1
pages/cb/index/index.vue

@@ -233,7 +233,7 @@
 						device_id: this.imports,
 					}
 				})
-				this.loadingtf =false
+				this.loadingtf = false
 				console.log(res)
 				this.equipArr[act].list = [...this.equipArr[act].list, ...res.data]
 				console.log(this.equipArr[act].list)

+ 251 - 0
pages/cb/index/search.vue

@@ -0,0 +1,251 @@
+<template>
+	<view>
+		<view class="status_bar"></view>
+		<view class="" style="position: relative;top: 44px;">
+			<view style="position: fixed;z-index: 100;padding-top: 20rpx;background-color: #FFFFFF;">
+				<uni-nav-bar @clickLeft="clickLeft" left-icon="back" left-text="返回"></uni-nav-bar>
+				<view class="search_top_input">
+					<input type="text" value="" placeholder="请输入设备ID" v-model="imports" @input="searchinp" />
+					<u-icon name="search" size="40" class="icon" @click="search"></u-icon>
+				</view>
+			</view>
+			<view class="nonetishi" v-if="none">
+				暂无此设备
+			</view>
+			<view class="prevents" v-else>
+				<view class="prevents_item" v-for="item,index in eqlistdata" :key="index" @click="eqdetails(item)">
+					<image :src="item.is_online==1?'http://static.yfpyx.com/bigdata_app/image/prevention/6.png':'http://static.yfpyx.com/bigdata_app/image/prevention/7.png'" mode=""
+					 class="prevents_item_img"></image>
+					<view class="prevents_item_top">
+						<p>设备 ID:{{item.imei || item.device_id}}</p>
+						<p :class="item.is_online==1?'green':'red'" v-text="item.is_online==1?'在线':'离线'"></p>
+					</view>
+					<view class="prevents_item_bot">
+						<p>设备名称:{{item.device_name}}</p>
+						<p>最新上报时间:{{item.addtime|timeFormat()}}</p>
+					</view>
+				</view>
+			</view>
+		</view>
+		<view class="top" v-if="isTop" @click="top">
+			<image :src="'http://static.yfpyx.com/bigdata_app'+'/image/6209a98f0cb3b5086f2ca36152c9269.png'" mode=""></image>
+		</view>
+	</view>
+</template>
+
+<script>
+	import {
+		Debounce,
+		Throttle
+	} from "../../../util/anitthro.js"
+	export default {
+		data() {
+			return {
+				imports:"",
+				device_id:'',
+				page:1,
+				eqlistdata:[],
+				isTop:false,
+				none:false
+			}
+		},
+		methods: {
+			async searchEquip() {
+				const res = await this.$myRequest({
+					url: '/api/api_gateway?method=forecast.worm_lamp.lamp_list',
+					data: {
+						device_type_id: this.device_id,
+						device_id: this.imports,
+						page:this.page
+					}
+				})
+				this.eqlistdata = this.eqlistdata.concat(res.data)
+				console.log(res)
+				if(this.eqlistdata.length==0){
+					this.none = true
+				}else{
+					this.none = false
+				}
+			},
+			async getxyEquipList(act) {
+				const res = await this.$myRequest({
+					url: '/api/api_gateway?method=sex_lure_nl.sex_lure.nl_device_list',
+					data: {
+						device_type_id: this.device_id,
+						page: this.page,
+						page_size: 10,
+					}
+				})
+				this.eqlistdata = this.eqlistdata.concat(res.data)
+				console.log(res)
+				if(this.eqlistdata.length==0){
+					this.none = true
+				}else{
+					this.none = false
+				}
+			},
+			searchinp(){
+				Debounce(() => {
+					this.eqlistdata = []
+					this.page = 1
+					if(this.device_id==10){
+						this.getxyEquipList()
+					}else{
+						this.searchEquip()
+					}
+				}, 1000)()
+			},
+			search(){
+				this.eqlistdata = []
+				this.page = 1
+				if(this.device_id==10){
+					this.getxyEquipList()
+				}else{
+					this.searchEquip()
+				}
+			},
+			clickLeft(){
+				uni.navigateTo({
+					url:"./index"
+				})
+			},
+			top() {
+				uni.pageScrollTo({
+					scrollTop: 0,
+					duration: 500
+				})
+			},
+			eqdetails(item){
+				item.type = Number(this.device_id)
+				console.log(item)
+				let data = JSON.stringify(item)
+				if(item.type==10){
+					uni.navigateTo({
+						url: '/pages/cb/xy2.0/particulars?info=' + data
+					});
+				}else{
+					uni.navigateTo({
+						url: '/pages/cb/equip-detail/equip-detail?info=' + data
+					});
+				}
+			}
+		},
+		onLoad(option){
+			this.device_id = option.device_id
+		},
+		onReachBottom() {
+			this.page++
+			console.log(1)
+			if(this.device_id==10){
+				this.getxyEquipList()
+			}else{
+				this.searchEquip()
+			}
+		},
+		onBackPress(options) {
+			if (options.from === 'navigateBack') {
+				return false;
+			}
+			this.clickLeft();
+			return true;
+		},
+		onPageScroll(e) { //nvue暂不支持滚动监听,可用bindingx代替
+			if (e.scrollTop > 200) { //距离大于200时显示
+				this.isTop = true
+			} else { //距离小于200时隐藏
+				this.isTop = false
+			}
+		},
+	}
+</script>
+
+<style lang="scss">
+	.search_top_input {
+		width: 80%;
+		height: 54rpx;
+		background-color: #E4E4E4;
+		border-radius: 27rpx;
+		position: absolute;
+		top: 33rpx;
+		right: 18rpx;
+		padding-top: 8rpx;
+		box-sizing: border-box;
+	
+		input {
+			width: 85%;
+			text-indent: 1rem;
+			font-size: 26rpx;
+		}
+	
+		.icon {
+			position: absolute;
+			top: 8rpx;
+			right: 26rpx;
+		}
+	}
+	.nonetishi{
+		width: 100%;
+		position: absolute;
+		top: 60px;
+		height: 200rpx;
+		text-align: center;
+		line-height: 200rpx;
+		font-size: 22px;
+	}
+	.prevents {
+		width: 100%;
+		position: absolute;
+		top: 60px;
+		.prevents_item {
+			width: 95%;
+			margin: 0 auto 30rpx;
+			border-radius: 10rpx;
+			box-shadow: 0 0 10rpx #bcb9ca;
+			padding: 20rpx 40rpx 20rpx 80rpx;
+			box-sizing: border-box;
+			position: relative;
+	
+			.prevents_item_img {
+				width: 30rpx;
+				height: 50rpx;
+				position: absolute;
+				top: -4rpx;
+				left: 30rpx;
+			}
+	
+			.prevents_item_top {
+				display: flex;
+				justify-content: space-between;
+				height: 60rpx;
+				border-bottom: 2rpx solid #F4F4F4;
+				line-height: 60rpx;
+				font-size: 26rpx;
+	
+				.red {
+					color: #ff0000;
+				}
+	
+				.green {
+					color: #7DBB91;
+				}
+			}
+	
+			.prevents_item_bot {
+				margin-top: 20rpx;
+				font-size: 26rpx;
+				color: #BDBDBD;
+			}
+		}
+	}
+	.top {
+		position: fixed;
+		right: 30px;
+		bottom: 100px;
+		z-index: 100;
+		image{
+			width: 100rpx;
+			height: 100rpx;
+		}
+	}
+</style>
+

+ 6 - 4
pages/cb/sim/sim.vue

@@ -143,6 +143,8 @@
 					}
 				})
 				let obj = res2.data.data
+				this.loding = false
+				this.loding2 = false
 				if (res2.code == 1) { //企鹏 新
 					var state = ""
 					switch (obj.deviceStatus) {
@@ -179,7 +181,7 @@
 							expiry_date: obj.expireDate, //到期日期,
 							simnew:"新"
 						}
-						this.loding = false
+						// this.loding = false
 					} else if (flag == 'hksim') {
 						this.hksim = {
 							iccid: res[0].iccid,
@@ -190,7 +192,7 @@
 							expiry_date: obj.expireDate, //到期日期
 							simnew:"新"
 						}
-						this.loding2 = false
+						// this.loding2 = false
 					}
 				} else if (res2.code == 2) { //合宙 旧
 					var state = ""
@@ -231,7 +233,7 @@
 							expiry_date: obj.expiry_date, //到期日期
 							simnew:"旧"
 						}
-						this.loding = false
+						// this.loding = false
 					} else if (flag == 'hksim') {
 						this.hksim = {
 							iccid: res[0].iccid,
@@ -242,7 +244,7 @@
 							expiry_date: obj.expiry_date, //到期日期
 							simnew:"旧"
 						}
-						this.loding2 = false
+						// this.loding2 = false
 					}
 				}
 			},

+ 1 - 1
pages/cb/xy/equip-set/equip-set.vue

@@ -47,7 +47,7 @@
 			数据频率(min)
 		</view>
 		<view class="">
-			<slider :value="equipContrlForm1.dat_f" show-value="true" :min="10" :max="40" @change="sliderChange" block-color="#57C878"
+			<slider :value="equipContrlForm1.dat_f" show-value="true" :min="10" :max="60" @change="sliderChange" block-color="#57C878"
 			 activeColor="#57C878" step="1" />
 		</view>
 		<view class="submit-box">

+ 15 - 9
pages/cb/xy/equip-set/xyhistoryile.vue

@@ -138,22 +138,28 @@
 					this.wind_sped = "--"
 					this.wind_drec = "--"
 				} else {
-					this.wind_sped = res[0].others.wind_sped
-					if (22 < res[0].others.wind_drec && 67 < res[0].others.wind_drec) {
+					if(res[res.length-1].others.wind_sped>=66.6){
+						this.wind_sped = 0
+					}else{
+						this.wind_sped = res[res.length-1].others.wind_sped
+					}
+					if (22 < res[res.length-1].others.wind_drec && 67 > res[res.length-1].others.wind_drec) {
 						this.wind_drec = "东北"
-					} else if (67 < res[0].others.wind_drec && 112 > res[0].others.wind_drec) {
+					} else if (67 < res[res.length-1].others.wind_drec && 112 > res[res.length-1].others.wind_drec) {
 						this.wind_drec = "东"
-					} else if (112 < res[0].others.wind_drec && 157 > res[0].others.wind_drec) {
+					} else if (112 < res[res.length-1].others.wind_drec && 157 > res[res.length-1].others.wind_drec) {
 						this.wind_drec = "东南"
-					} else if (157 < res[0].others.wind_drec && 202 > res[0].others.wind_drec) {
+					} else if (157 < res[res.length-1].others.wind_drec && 202 > res[res.length-1].others.wind_drec) {
 						this.wind_drec = "南"
-					} else if (202 < res[0].others.wind_drec && 247 > res[0].others.wind_drec) {
+					} else if (202 < res[res.length-1].others.wind_drec && 247 > res[res.length-1].others.wind_drec) {
 						this.wind_drec = "西南"
-					} else if (247 < res[0].others.wind_drec && 292 > res[0].others.wind_drec) {
+					} else if (247 < res[res.length-1].others.wind_drec && 292 > res[res.length-1].others.wind_drec) {
 						this.wind_drec = "西"
-					} else if (292 < res[0].others.wind_drec && 337 > res[0].others.wind_drec) {
+					} else if (292 < res[res.length-1].others.wind_drec && 337 > res[res.length-1].others.wind_drec) {
 						this.wind_drec = "西北"
-					} else {
+					} else if (res[res.length-1].others.wind_drec>360){
+						this.wind_drec = "无"
+					}else{
 						this.wind_drec = "北"
 					}
 				}

+ 11 - 5
pages/cb/xy2.0/particulars.vue

@@ -167,6 +167,7 @@
 					var date = times.getDate()<10?"0"+times.getDate():times.getDate()
 					this.yxchangetime = times.getFullYear() + "-" + month + "-" + date
 				}
+				this.Chistory(this.equipInfo.device_id)
 			},
 			async getSim(d_id) {
 				const res = await this.$myRequest({
@@ -176,7 +177,7 @@
 					}
 				})
 				console.log(res)
-				if(res.data != null){
+				if(res != null){
 					this.simdata = res.data.card_list[0]
 					this.usedBeliel = (this.simdata.data_plan-this.simdata.data_balance)/ this.simdata.data_plan *100
 					this.residueBeliel = this.simdata.data_balance/this.simdata.data_plan * 100
@@ -264,14 +265,20 @@
 					url: '/api/api_gateway?method=sex_lure_nl.sex_lure.nl_device_line_chart',
 					data: {
 						device_id: device_id,
-						start_time: Math.floor(+new Date/1000 - 24*60*60),
-						end_time: Math.floor(+new Date/1000),
+						// start_time: Math.floor(+new Date/1000 - 24*60*60),
+						// end_time: Math.floor(+new Date/1000),
 						status: "pest"
 					}
 				})
 				console.log(res)
+				console.log(this.newState.decoy)
 				if(res.data[0]){
-					this.trapnum = res.data[0].pest_num
+					//***********************************************************
+					// if(this.newState.decoy=="草地贪夜蛾"){
+					// 	this.trapnum = 0
+					// }else{
+						this.trapnum = res.data[0].pest_num
+					// }	
 				}
 			}
 		},
@@ -283,7 +290,6 @@
 			var times = new Date()
 			this.date = times.getFullYear()+1 + "-" + Number(times.getMonth()+1) + "-" + times.getDate()
 			console.log(this.date)
-			this.Chistory(this.equipInfo.device_id)
 			// uni.getStorage({ 待开发
 			// 	key:"jurisdiction",
 			// 	success:(res)=>{

+ 1 - 1
pages/disease/cmb.vue

@@ -354,7 +354,7 @@ export default {
         var xtitle = [];
         for (var i = 0; i < dat.length; i++) {
           var item = eval("(" + dat[i] + ")");
-          var tim = parseInt(item["uploadTime"]) * 1000 - 8 * 3600000;
+          var tim = parseInt(item["uploadTime"]) * 1000;
           var times = new Date(tim);
           xtitle.unshift(
             times.getMonth() +

+ 1 - 1
pages/environment/contros.vue

@@ -30,7 +30,7 @@
 				<view class="timing">
 					<p class="operation_title">上传时间间隔(min)</p>
 					<view class="timing_text">
-						<slider value="1" v-model="config.interval" @change="sliderChange" step="1" min="1" max="360" show-value block-size="18" activeColor="#57C878" />
+						<slider value="0" v-model="config.interval" @change="sliderChange" step="1" min="0" max="359" show-value block-size="18" activeColor="#57C878" />
 					</view>
 				</view>
 				<view class="ensure">

+ 88 - 64
pages/environment/equipment.vue

@@ -7,13 +7,17 @@
 			</view>
 			<view class="info">
 				<view class="info_item">
-					<image :src="eqinfo.item.is_online==1?'http://www.hnyfwlw.com:8006/bigdata_app/image/cb/onBg.png':'http://www.hnyfwlw.com:8006/bigdata_app/image/cb/offBg.png'"
-					 mode="" class="bgi"></image>
-					<p style="font-size: 32rpx;" @click="copy(eqinfo.item)">设备 ID:{{eqinfo.item.equip_id||eqinfo.item.device_id}}
-						<image src="http://www.hnyfwlw.com:8006/bigdata_app/image/environment/fuzhi.png" mode="" class="tishi"></image>
+					<image
+						:src="eqinfo.item.is_online==1?'http://www.hnyfwlw.com:8006/bigdata_app/image/cb/onBg.png':'http://www.hnyfwlw.com:8006/bigdata_app/image/cb/offBg.png'"
+						mode="" class="bgi"></image>
+					<p style="font-size: 32rpx;" @click="copy(eqinfo.item)">设备
+						ID:{{eqinfo.item.equip_id||eqinfo.item.device_id}}
+						<image src="http://www.hnyfwlw.com:8006/bigdata_app/image/environment/fuzhi.png" mode=""
+							class="tishi"></image>
 					</p>
 					<p>设备名称:{{eqinfo.item.equip_name?eqinfo.item.equip_name:"无"}}</p>
-					<p>最近上报时间:<span v-if="eqinfo.item.uptime">{{eqinfo.item.uptime|timeFormat()}}</span><span v-else>{{eqinfo.item.addtime|timeFormat()}}</span></p>
+					<p>最近上报时间:<span v-if="eqinfo.item.uptime">{{eqinfo.item.uptime|timeFormat()}}</span><span
+							v-else>{{eqinfo.item.addtime|timeFormat()}}</span></p>
 					<p>地址:{{city}}</p>
 				</view>
 			</view>
@@ -39,19 +43,24 @@
 				<p class="realtime_title"><span>实时数据</span></p>
 				<view class="realtime_text">
 					<view class="realtime_text_item">
-						<view class="realtime_text_item_info" v-for="(item,index) in olddata.conf" :key="index" v-if="olddata.dat[index][1]" @click="oneday(item,index)">
-							<view class="item_info_img" :style="{'background-color':olddatas[Number(index.substr(1))%6]}">
-								<image :src="'http://www.hnyfwlw.com:8006/bigdata_app'+'/image/environment/icon_'+olddata.dat[index][1]+'.png'"
-								 mode=""></image>
+						<view class="realtime_text_item_info" v-for="(item,key) in olddata" :key="key"
+							@click="oneday(key)">
+							<view class="item_info_img"
+								:style="{'background-color':olddatas[1]}">
+								<image
+									:src="'http://www.hnyfwlw.com:8006/bigdata_app'+'/image/environment/icon_'+item[1]+'.png'"
+									mode=""></image>
 							</view>
 							<view class="item_info_text">
-								<p>{{item}}</p>
-								<p style="margin-top: 20rpx;">{{parseFloat(olddata.dat[index][0]) == -99.99 ?'N/A':parseFloat(olddata.dat[index])}}</p>
+								<p>{{key}}</p>
+								<p style="margin-top: 20rpx;">
+									{{parseFloat(olddata[key][0]) == -99.99 ?'N/A':parseFloat(item[0])}}
+								</p>
 							</view>
 						</view>
 					</view>
 				</view>
-				<view class="realtime_tishi" v-if="!realtimeTF && !dataloadingtf">
+				<view class="realtime_tishi" v-if="realtimeTF && !dataloadingtf">
 					暂无数据
 				</view>
 				<view class="realtime_tishi" v-if="dataloadingtf">
@@ -63,7 +72,8 @@
 			<p class="tishiTF" v-if="tishiTF">暂无24小时数据</p>
 			<view class="slot-content" v-else>
 				<canvas canvas-id="canvasColumnA" id="canvasColumnA" class="charts" @touchstart="touchLineA($event)"
-				 @touchmove="moveLineA($event)" @touchend="touchEndLineA($event)" disable-scroll=true :style="{'width':cWidth*pixelRatio+'px','height':cHeight*pixelRatio+'px', 'transform': 'scale('+(1/pixelRatio)+')','margin-left':-cWidth*(pixelRatio-1)/2+'px','margin-top':-cHeight*(pixelRatio-1)/2+'px'}"></canvas>
+					@touchmove="moveLineA($event)" @touchend="touchEndLineA($event)" disable-scroll=true
+					:style="{'width':cWidth*pixelRatio+'px','height':cHeight*pixelRatio+'px', 'transform': 'scale('+(1/pixelRatio)+')','margin-left':-cWidth*(pixelRatio-1)/2+'px','margin-top':-cHeight*(pixelRatio-1)/2+'px'}"></canvas>
 				<view class="maxdata">
 					<view class="maxdata_box">
 						<p class="dian"></p>
@@ -101,11 +111,11 @@
 				show: false,
 				onedatasMax: 0,
 				onedatasMin: 0,
-				onedatasMaxtime:"",
-				onedatasMintime:"",
-				tishiTF:false,
-				realtimeTF:false,//暂无数据提示
-				dataloadingtf:true,//加载中提示
+				onedatasMaxtime: "",
+				onedatasMintime: "",
+				tishiTF: false,
+				realtimeTF: false, //暂无数据提示
+				dataloadingtf: true, //加载中提示
 			}
 		},
 		methods: {
@@ -115,33 +125,41 @@
 				})
 			},
 			async history() { //设备列表
+				this.dataloadingtf = true
 				const res = await this.$myRequest({
 					url: '/api/api_gateway?method=weather.weather.qxz_status',
 					data: {
 						device_id: this.eqinfo.item.equip_id || this.eqinfo.item.device_id
 					}
 				})
-				this.olddata = res
-				var arr = []
-				for (var key in this.olddata.conf) {
-					if (this.olddata.conf[key].indexOf("#") != -1) {
-						this.olddata.conf[key] = this.olddata.conf[key].replace("#", "(") + ")"
+				this.dataloadingtf = false
+				// this.olddata = res
+				// console.log(res)olddata
+				this.olddata = {}
+				for (var key in res.conf) {
+					if (res.conf[key]) {
+						if (res.conf[key].indexOf("#") != -1) {
+							this.olddata[res.conf[key].replace("#", "(") + ")"] = res.dat[key].split("#")
+						} else {
+							this.olddata[res.conf[key]] = res.dat[key].split("#")
+						}
 					}
-					this.olddata.dat[key] = this.olddata.dat[key].split("#")
-					arr.push(this.olddata.dat[key][0])
 				}
-				console.log(this.olddata.conf)
-				console.log(arr)
-				this.realtimeTF = arr.some(function(item){
-					return item!=""
-				})
+				console.log(this.olddata)
+				this.realtimeTF = true
+				for (var key in this.olddata) {
+					this.realtimeTF = false
+				}
+				// this.realtimeTF = arr.some(function(item){
+				// 	return item!=""
+				// })
 				console.log(this.realtimeTF)
 			},
 			// weather.weather.qxz_data_chart 一天的数据
 			async onehistory() { //设备列表
-				var  newtime = +new Date()/1000
-				var  oldtime = newtime-24*60*60
-				this.dataloadingtf = true
+				var newtime = +new Date() / 1000
+				var oldtime = newtime - 24 * 60 * 60
+
 				const res = await this.$myRequest({
 					url: '/api/api_gateway?method=weather.weather.qxz_data_chart',
 					data: {
@@ -150,7 +168,7 @@
 						end: parseInt(newtime)
 					}
 				})
-				this.dataloadingtf =false
+
 				this.onedatas = res.data
 				console.log(this.onedatas)
 			},
@@ -173,9 +191,9 @@
 					complete: ress => {
 						console.log(ress)
 						// this.city = ress.data.regeocode.formatted_address
-						if(ress.data.regeocode.formatted_address.length==0){
-							this.city="--"
-						}else{
+						if (ress.data.regeocode.formatted_address.length == 0) {
+							this.city = "--"
+						} else {
 							this.city = ress.data.regeocode.formatted_address
 						}
 					}
@@ -196,10 +214,10 @@
 					url: "../afterSale/addafter?device_id=" + device_id + "&device_type=" + 5
 				})
 			},
-			oneday(item, index) {
-				console.log(item, index)
+			oneday(key) {
+				// console.log(key)
 				var obj = {
-					name: item,
+					name: key,
 					data: [],
 				}
 				var xtitle = []
@@ -207,31 +225,30 @@
 				var arr = []
 				var timearr = []
 				for (var i = 0; i < this.onedatas.length; i++) {
-					if(Number(this.onedatas[i].dat[index].slice(0, this.onedatas[i].dat[index].indexOf("#")))!=-99.99){
-						obj.data.unshift(Number(this.onedatas[i].dat[index].slice(0, this.onedatas[i].dat[index].indexOf("#"))))
-						arr.unshift(Number(this.onedatas[i].dat[index].slice(0, this.onedatas[i].dat[index].indexOf("#"))))
-						var times = new Date(this.onedatas[i].time * 1000)
-						xtitle.unshift(times.getMonth() + 1 + "/" + times.getDate() + "-" + times.getHours() + ":" + times.getMinutes())
-						timearr.unshift(+new Date(times)/1000)
-					}
+					var times = new Date(this.onedatas[i].time * 1000)
+					arr.unshift(Number(this.onedatas[i].dat[this.olddata[key][2]].split("#")[0]))
+					xtitle.unshift(times.getMonth() + 1 + "/" + times.getDate() + "-" + times.getHours() + ":" + times
+						.getMinutes())
+					timearr.unshift(+new Date(times) / 1000)
+					obj.data.unshift(Number(this.onedatas[i].dat[this.olddata[key][2]].split("#")[0]))
 				}
 				arr.sort(function(a, b) {
 					return a - b
 				})
 				this.onedatasMin = arr[0]
 				this.onedatasMax = arr[arr.length - 1]
-				for(var i = 0; i < obj.data.length; i++){
-					if(this.onedatasMax==obj.data[i]){
+				for (var i = 0; i < obj.data.length; i++) {
+					if (this.onedatasMax == obj.data[i]) {
 						this.onedatasMaxtime = timearr[i]
 					}
-					if(this.onedatasMin==obj.data[i]){
+					if (this.onedatasMin == obj.data[i]) {
 						this.onedatasMintime = timearr[i]
 					}
 				}
 				linearr.push(obj)
-				if(obj.data.length==0){
+				if (obj.data.length == 0) {
 					this.tishiTF = true
-				}else{
+				} else {
 					this.tishiTF = false
 				}
 				this.showColumn("canvasColumnA", xtitle, linearr)
@@ -264,7 +281,9 @@
 						scrollColor: '#DEE7F7', //默认为 #A6A6A6
 					},
 					yAxis: {
-						format:(val)=>{return val.toFixed(2)}
+						format: (val) => {
+							return val.toFixed(2)
+						}
 					},
 					width: _self.cWidth * 1,
 					height: _self.cHeight * 1,
@@ -290,12 +309,12 @@
 					}
 				});
 			},
-			siminfo(sim){
+			siminfo(sim) {
 				uni.navigateTo({
-					url: "./sim?simid="+sim
+					url: "./sim?simid=" + sim
 				})
 			},
-			async getbaseinfo(id){
+			async getbaseinfo(id) {
 				const res = await this.$myRequest({
 					url: '/api/api_gateway?method=weather.weather.qxz_page',
 					data: {
@@ -312,11 +331,11 @@
 			this.$forceUpdate()
 			this.eqinfo.item = JSON.parse(option.shebei)
 			console.log(JSON.parse(option.shebei))
-				
-			if(!this.eqinfo.item.iccid){
+
+			if (!this.eqinfo.item.iccid) {
 				this.getbaseinfo(this.eqinfo.item.equip_id)
 			}
-			
+
 			this.history()
 			this.onehistory()
 			if (this.eqinfo.item.lat == '' || this.eqinfo.item.lng == "") {
@@ -335,7 +354,7 @@
 						return item.purview_name == "环境监测"
 					})
 					var arr = []
-					if(items2[0]){
+					if (items2[0]) {
 						arr = items2[0].children
 					}
 					console.log(arr)
@@ -431,6 +450,7 @@
 			width: 90%;
 			margin: 0 auto;
 		}
+
 		.dataloading:after {
 			overflow: hidden;
 			display: inline-block;
@@ -438,17 +458,17 @@
 			animation: ellipsis 2s infinite;
 			content: "\2026";
 		}
-		
+
 		@keyframes ellipsis {
 			from {
 				width: 2px;
 			}
-		
+
 			to {
 				width: 15px;
 			}
 		}
-		
+
 		.realtime_tishi {
 			width: 90%;
 			margin: 0 auto;
@@ -456,6 +476,7 @@
 			font-size: 32rpx;
 			padding-top: 40rpx;
 		}
+
 		.realtime_text {
 			width: 90%;
 			margin: 0 auto;
@@ -503,10 +524,12 @@
 		// height: 400upx;
 		background-color: #FFFFFF;
 	}
-	.tishiTF{
+
+	.tishiTF {
 		text-align: center;
 		margin-top: 20rpx;
 	}
+
 	.maxdata {
 		font-size: 26rpx;
 
@@ -515,6 +538,7 @@
 			padding-left: 30rpx;
 			box-sizing: border-box;
 		}
+
 		.dian {
 			width: 20rpx;
 			height: 20rpx;

+ 172 - 0
pages/environment/search.vue

@@ -0,0 +1,172 @@
+<template>
+	<view>
+		<view class="status_bar"></view>
+		<view class="" style="position: relative;top: 44px;">
+			<view style="position: fixed;z-index: 100;">
+				<uni-nav-bar @clickLeft="clickLeft" left-icon="back" left-text="返回"></uni-nav-bar>
+				<view class="search_top_input">
+					<input type="text" value="" placeholder="请输入设备ID" v-model="imports" @input="searchinp" />
+					<u-icon name="search" size="40" class="icon" @click="search"></u-icon>
+				</view>
+			</view>
+			<view class="prevents">
+				<view class="prevents_item" v-for="item,index in eqlistdata" :key="index" @click="eqdetails(item)">
+					<image :src="item.is_online==1?'http://static.yfpyx.com/bigdata_app/image/prevention/6.png':'http://static.yfpyx.com/bigdata_app/image/prevention/7.png'" mode=""
+					 class="prevents_item_img"></image>
+					<view class="prevents_item_top">
+						<p>设备 ID:{{item.equip_id}}</p>
+						<p :class="item.is_online==1?'green':'red'" v-text="item.device_status==1?'在线':'离线'"></p>
+					</view>
+					<view class="prevents_item_bot">
+						<p>设备名称:{{item.equip_name==""?"无":item.equip_name}}</p>
+						<p>最新上报时间:{{item.uptime|timeFormat()}}</p>
+					</view>
+				</view>
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+	import {
+		Debounce,
+		Throttle
+	} from "../../util/anitthro.js"
+	export default {
+		data() {
+			return {
+				imports: '',
+				eqlistdata: [],
+				page: 1,
+				size: 10,
+				show: false,
+				value: '',
+				options1: [{
+						text: "杀虫灯",
+						id: 2
+					},
+					{
+						text: "虫情测报",
+						id: 3
+					},
+					{
+						text: "孢子仪",
+						id: 7
+					},
+					{
+						text: "性诱设备",
+						id: 4
+					},
+				]
+			}
+		},
+		methods: {
+			async eqlist() { //设备列表
+				const res = await this.$myRequest({
+					url: '/api/api_gateway?method=weather.weather.qxz_page',
+					data: {
+						device_id: this.imports
+					}
+				})
+				this.eqlistdata = this.eqlistdata.concat(res.ids)
+				console.log(this.eqlistdata)
+			},
+			clickLeft() {
+				uni.navigateBack({
+					delta: 1
+				})
+			},
+			search() {
+				this.eqlistdata = []
+				this.eqlist()
+			},
+			searchinp() {
+				Debounce(() => {
+					this.eqlistdata = []
+					this.eqlist()
+				}, 1000)()
+			},
+			actionSheetCallback(index) { //选择框
+				this.value = this.options1[index].text;
+				// this.id = this.options1[index].id
+			},
+			eqdetails(data) {
+				uni.navigateTo({
+					url: "./equipment?shebei=" + JSON.stringify(data)
+				})
+			}
+		}
+	}
+</script>
+
+<style lang="scss">
+	.search_top_input {
+		width: 80%;
+		height: 54rpx;
+		background-color: #E4E4E4;
+		border-radius: 27rpx;
+		position: absolute;
+		top: 18rpx;
+		right: 18rpx;
+		padding-top: 8rpx;
+		box-sizing: border-box;
+
+		input {
+			width: 85%;
+			text-indent: 1rem;
+			font-size: 26rpx;
+		}
+
+		.icon {
+			position: absolute;
+			top: 8rpx;
+			right: 26rpx;
+		}
+	}
+
+	.prevents {
+		width: 100%;
+		position: absolute;
+		top: 54px;
+
+		.prevents_item {
+			width: 95%;
+			margin: 0 auto 30rpx;
+			border-radius: 10rpx;
+			box-shadow: 0 0 10rpx #bcb9ca;
+			padding: 20rpx 40rpx 20rpx 80rpx;
+			position: relative;
+			box-sizing: border-box;
+			.prevents_item_img {
+				width: 30rpx;
+				height: 50rpx;
+				position: absolute;
+				top: -4rpx;
+				left: 30rpx;
+			}
+
+			.prevents_item_top {
+				display: flex;
+				justify-content: space-between;
+				height: 60rpx;
+				border-bottom: 2rpx solid #F4F4F4;
+				line-height: 60rpx;
+				font-size: 26rpx;
+
+				.red {
+					color: #ff0000;
+				}
+
+				.green {
+					color: #7DBB91;
+				}
+			}
+
+			.prevents_item_bot {
+				margin-top: 20rpx;
+				font-size: 26rpx;
+				color: #BDBDBD;
+			}
+		}
+	}
+</style>

+ 338 - 0
pages/equipList/search.vue

@@ -0,0 +1,338 @@
+<template>
+	<view>
+		<view class="status_bar"></view>
+		<view style="position: fixed;top: 44px; z-index: 100;height: 80rpx;background-color: #FFFFFF;padding-top: 10px;">
+			<uni-nav-bar @clickLeft="clickLeft" left-icon="back" left-text="返回"></uni-nav-bar>
+			<view class="search_bot_input">
+				<input type="text" value="" placeholder="请输入设备ID" v-model="imports" @input="searchinput" />
+				<u-icon name="search" size="40" class="icon" @click="search"></u-icon>
+			</view>
+		</view>
+		<view class="list">
+			<view class="list_item" v-for="(item,index) in eqlistdata" :key="index" @click="historys(item)">
+				<view class="list_item_top">
+					<p class="p1">
+						<image :src="'http://static.yfpyx.com/bigdata_app'+ imgpath[0].path" mode=""></image>
+						{{item.device_name==''?"--":item.device_name}}
+					</p>
+					<p :class="[item.is_online?'p2':'p_out']">{{item.is_online?"在线":"离线"}}</p>
+				</view>
+				<view class="list_item_text">
+					<p>设备ID:{{item.imei}}</p>
+					<p>适配用户:{{item.device_user==''?"无":item.device_user}}</p>
+					<p>添加设备时间:{{item.addtime|timeFormat()}}</p>
+					<p>添加设备时间:{{item.uptime|timeFormat()}}</p>
+					<p>设备已运行:{{item.days}}天</p>
+				</view>
+				<view class="list_item_btn" v-if="infoalter" @click.stop="modification(item)">
+					修改名称
+				</view>
+			</view>
+			<view class="none" v-if="eqlistdatatf">
+				暂无数据
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+	import {
+		Debounce,
+		Throttle
+	} from "../../util/anitthro.js"
+	export default {
+		data() {
+			return {
+				imports: '',
+				eqlistdata: [],
+				images: [{
+						name: "杀虫灯",
+						path: "/image/fourMoodBase/3.png", //
+						id: 2
+					},
+					{
+						name: "测报灯",
+						path: "/image/fourMoodBase/1.png",
+						id: 3
+					}, {
+						name: "性诱测报",
+						path: "/image/fourMoodBase/6.png",
+						id: 4
+					}, {
+						name: "环境监测",
+						path: "/image/fourMoodBase/5.png",
+						id: 5
+					}, {
+						name: "监控设备",
+						path: "/image/fourMoodBase/2.png",
+						id: 6
+					}, {
+						name: "孢子仪",
+						path: "/image/fourMoodBase/4.png",
+						id: 7
+					},
+					{
+						name: "性诱2.0",
+						path: "/image/fourMoodBase/10.png",
+						id: 10
+					}
+				],
+				eqlistdatatf: false, //暂无数据
+				indexs: 2, //设备id
+				page: 1,
+				size: 10,
+				infoalter:false,
+				imgpath:[]
+			}
+		},
+		methods: {
+			async eqlist() { //设备列表
+				const res = await this.$myRequest({
+					url: '/api/api_gateway?method=forecast.worm_lamp.lamp_list',
+					data: {
+						device_type_id: this.indexs,
+						device_id: this.imports,
+						page: this.page,
+						page_size: this.size,
+					}
+				})
+				this.eqlistdata = this.eqlistdata.concat(res.data)
+				var newtime = +new Date()/1000
+				for(var i=0;i<this.eqlistdata.length;i++){
+					var days = (newtime-this.eqlistdata[i].uptime)/60/60/24
+					this.eqlistdata[i].days = Math.round(days)
+				} 
+				console.log(this.eqlistdata)
+				if (this.eqlistdata.length == 0) {
+					this.eqlistdatatf = true
+				} else {
+					this.eqlistdatatf = false
+				}
+			},
+			clickLeft() { //返回
+				uni.switchTab({
+					url: "./index"
+				})
+			},
+			search() { //搜索
+				this.eqlistdata = []
+				this.page = 1
+				this.eqlist()
+			},
+			searchinput() {
+				Debounce(() => {
+					this.eqlistdata = []
+					this.page = 1
+					this.eqlist()
+				}, 1000)()
+			},
+			modification(item) {
+				uni.navigateTo({
+					url: "./modification?data=" + JSON.stringify(item) + "&id=" + (this.indexs)
+				})
+			},
+			historys(item) {
+				switch (Number(this.indexs)) {
+					case 2:
+						uni.navigateTo({
+							url: "../prevention/equipmentdetails?shebei=" + JSON.stringify(item)
+						})
+						break;
+					case 5:
+						console.log(item)
+						var obj = {}
+						obj.d_id = item.d_id
+						obj.equip_id = item.imei
+						obj.is_online = item.is_online
+						obj.lat = item.lat
+						obj.lng = item.lng
+						obj.equip_name = item.device_name
+						obj.uptime = item.addtime
+						uni.navigateTo({
+							url: "../environment/equipment?shebei=" + JSON.stringify(obj)
+						})
+						break;
+					case 6:
+						uni.navigateTo({
+							url: "/pages/webview?device_id=" + item.imei + "&accessToken=" + this.accessToken
+						})
+						break;
+					default:
+						item.type = this.indexs
+						uni.navigateTo({
+							url: "../cb/equip-detail/equip-detail?info=" + JSON.stringify(item)
+						})
+						break;
+				}
+			}
+		},
+		onLoad(option) {
+			this.indexs = option.id
+			this.imgpath = this.images.filter((item)=>{
+				return item.id == option.id
+			})
+			console.log(this.imgpath)
+			uni.getStorage({
+				key:"jurisdiction",
+				success:(res)=>{
+					console.log(JSON.parse(res.data))
+					let items = JSON.parse(res.data).filter((item)=>{
+						return item.purview_name == "设备管理"
+					})
+					let items2 = items[0].children.filter((item)=>{
+						return item.purview_name == "设备列表"
+					})
+					this.infoalter = items2[0].children.some((item)=>{
+						return item.purview_name == "修改名称" || item.purview_name == "添加位置"
+					})
+				},
+			})
+		},
+		onReachBottom() {
+			this.page++
+			this.eqlist()
+		},
+		onBackPress(options) {
+			if (options.from === 'navigateBack') {
+				return false;
+			}
+			this.clickLeft();
+			return true;
+		},
+	}
+</script>
+<style lang="scss">
+	.search_top_input {
+		width: 80%;
+		height: 54rpx;
+		background-color: #E4E4E4;
+		border-radius: 27rpx;
+		position: absolute;
+		top: 18rpx;
+		right: 18rpx;
+		padding-top: 8rpx;
+		box-sizing: border-box;
+
+		input {
+			width: 85%;
+			text-indent: 1rem;
+			font-size: 26rpx;
+		}
+
+		.icon {
+			position: absolute;
+			top: 18rpx;
+			right: 32rpx;
+		}
+	}
+
+	.search_bot_input {
+		width: 80%;
+		height: 54rpx;
+		background-color: #E4E4E4;
+		border-radius: 27rpx;
+		position: absolute;
+		top: 18px;
+		right: 18rpx;
+		box-sizing: border-box;
+		padding-top: 8rpx;
+
+		input {
+			width: 85%;
+			text-indent: 1rem;
+			font-size: 26rpx;
+		}
+
+		.icon {
+			position: absolute;
+			top: 8rpx;
+			right: 26rpx;
+		}
+	}
+
+	.list {
+		width: 100%;
+		background-color: #FDFDFD;
+		position: absolute;
+		top: 100px;
+
+		.list_item {
+			width: 95%;
+			margin: 20rpx auto;
+			padding: 10rpx 20rpx;
+			position: relative;
+			background-color: #FFFFFF;
+			box-sizing: border-box;
+			box-shadow: 0 0 10rpx #bcb9ca;
+
+			.list_item_top {
+				display: flex;
+				justify-content: space-between;
+
+				.p1 {
+					height: 60rpx;
+					line-height: 60rpx;
+					font-size: 28rpx;
+
+					image {
+						width: 40rpx;
+						height: 40rpx;
+						vertical-align: text-top;
+						margin-right: 20rpx;
+					}
+				}
+
+				.p2 {
+					height: 60rpx;
+					line-height: 60rpx;
+					font-size: 28rpx;
+					color: #42b983;
+				}
+
+				.p_out {
+					height: 60rpx;
+					line-height: 60rpx;
+					font-size: 28rpx;
+					color: red;
+				}
+			}
+
+			.list_item_text {
+				margin-top: 20rpx;
+
+				p {
+					font-size: 24rpx;
+					color: #636363;
+					margin-top: 10rpx;
+				}
+
+				p:first-child {
+					font-size: 28rpx;
+					font-weight: 700;
+				}
+			}
+
+			.list_item_btn {
+				width: 126rpx;
+				color: #42b983;
+				height: 40rpx;
+				text-align: center;
+				border: 1rpx solid #42b983;
+				border-radius: 25rpx;
+				font-size: 24rpx;
+				line-height: 35rpx;
+				position: absolute;
+				top: 136rpx;
+				right: 20rpx;
+			}
+		}
+
+		.none {
+			width: 100%;
+			height: 100rpx;
+			line-height: 100rpx;
+			font-size: 32rpx;
+			text-align: center;
+		}
+	}
+</style>

+ 40 - 15
pages/index/index.vue

@@ -9,7 +9,7 @@
 					{{hello}}
 				</view>
 				<view class="">
-					{{$isneutral?"欢迎登录云飞智控":"欢迎登录控"}}
+					{{$isneutral?"欢迎登录云飞智控":"欢迎登录控"}}
 				</view>
 			</view>
 		</view>
@@ -282,6 +282,7 @@
 
 <script>
 	import kpsImageCutter from "@/components/ksp-image-cutter/ksp-image-cutter.vue";
+	import jsencrypt from '@/components/jsencrypt/jsencrypt.vue';
 	export default {
 		components: {
 			kpsImageCutter
@@ -344,6 +345,10 @@
 					key: 'myuser_type',
 					data: JSON.stringify(res.myuser_type),
 				})
+				uni.setStorage({
+					key: 'myuid',
+					data: JSON.stringify(res.myuid),
+				})
 				this.jurisdiction = {
 					cbtf: false,
 					jktf: false,
@@ -360,34 +365,34 @@
 				for (var i = 0; i < res.children.length; i++) {
 					switch (res.children[i].pur_id) {
 						case 36:
-							this.jurisdiction.cbtf = true//"测报系统"
+							this.jurisdiction.cbtf = true //"测报系统"
 							break;
 						case 42:
-							this.jurisdiction.jktf = true//"可视农业"
+							this.jurisdiction.jktf = true //"可视农业"
 							break;
 						case 40:
-							this.jurisdiction.hjtf = true//"环境监测系统"
+							this.jurisdiction.hjtf = true //"环境监测系统"
 							break;
 						case 44:
-							this.jurisdiction.fztf = true//"防治系统"
+							this.jurisdiction.fztf = true //"防治系统"
 							break;
 						case 58:
-							this.jurisdiction.sytf = true//"溯源系统"
+							this.jurisdiction.sytf = true //"溯源系统"
 							break;
 						case 28:
-							this.jurisdiction.sbtf = true//"系统管理"
+							this.jurisdiction.sbtf = true //"系统管理"
 							break;
 						case 25:
-							this.jurisdiction.sqtf = true//"四情基地"
+							this.jurisdiction.sqtf = true //"四情基地"
 							break;
 						case 124:
-							this.jurisdiction.zjtf = true//"专家诊断"
+							this.jurisdiction.zjtf = true //"专家诊断"
 							break;
-						// case "灌溉控制系统":
-						// 	this.jurisdiction.sftf = true
-						// 	break;
+							// case "灌溉控制系统":
+							// 	this.jurisdiction.sftf = true
+							// 	break;
 						case 202:
-							this.jurisdiction.ggtf = true//"灌溉控制系统"
+							this.jurisdiction.ggtf = true //"灌溉控制系统"
 							break;
 					}
 				}
@@ -426,6 +431,21 @@
 						console.log(999)
 					}
 				});
+				// var encrypt = new jsencrypt();
+				var publiukey = `-----BEGIN PUBLIC KEY-----
+				MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6m92fXUrccS4SoLg4W4jPRNua
+				4BcRk4ldLcqPuQpD2Mds2+hw+Gi+0MUnshF/r/DTcCJgkt7rtoY9EB6/XJ6MFw14
+				whhESFie/lZUWRsk8M89Rkr8m5rwmBl+uLAd5LopyshFqKTBXeT2ytHP1JCQLPBO
+				34Fy4/yEz4qEzkzBuwIDAQAB
+				-----END PUBLIC KEY-----`;
+				var time = +new Date();
+				var str2 = 'YuNfEi' + time + 'YuNfEi'
+				var pubblicData = jsencrypt.setEncrypt(publiukey, str2);
+				// encrypt.setPublicKey(str);
+				// var time = +new Date();
+				// var str2 = 'YuNfEi' + time + 'YuNfEi'
+				// var encrypted = encrypt.encrypt(str2);
+				console.log(pubblicData)
 				if (this.flag == 2) {
 					console.log('111')
 					// pest.pests.insect_discern 虫害
@@ -435,7 +455,8 @@
 						filePath: ev.path,
 						name: 'img_file',
 						formData: {
-							'user': 'test'
+							'user': 'test',
+							"sign": pubblicData
 						},
 						success: (uploadFileRes) => {
 							console.log(JSON.parse(uploadFileRes.data))
@@ -457,7 +478,8 @@
 						filePath: ev.path,
 						name: 'img_file',
 						formData: {
-							'user': 'test'
+							'user': 'test',
+							"sign": pubblicData
 						},
 						success: (uploadFileRes) => {
 							console.log(JSON.parse(uploadFileRes.data))
@@ -531,6 +553,9 @@
 				}
 			})
 			this.getUserlogin()
+		},
+		onShow() {
+			this.loadTF = false
 		}
 	}
 </script>

+ 1 - 1
pages/irrigate/weathdata.vue

@@ -13,7 +13,7 @@
 				设备ID:{{item.device_id}}
 			</view>
 			<view class="datainfo_item">
-				设备状态:{{item.device_notes==''?"--":item.device_notes}}
+				设备备注:{{item.device_notes==''?"--":item.device_notes}}
 			</view>
 			<view class="datainfo_item">
 				设备状态:{{item.device_status==1?"在线":"离线"}}

+ 90 - 14
pages/prevention/control.vue

@@ -51,22 +51,21 @@
 				<view class="control_interval">
 					<p class="title_p">上传时间间隔(min)</p>
 					<view class="slider">
-						<view class="" style="width: 90%;padding-top: 18rpx;">
-							<u-slider v-model="condatas.dat_f" min="0" max="100" step="1" active-color="#58C876"></u-slider>
-						</view>
-						<view class="" style="width: 10%;text-align: center;">
-							{{condatas.dat_f || 0}}
+						<view class="" style="width: 100%;padding-top: 18rpx;">
+							<slider  v-model="condatas.dat_f" min="0" max="120" step="1" show-value block-size="18" activeColor="#57C878" @changing="changing"></slider>
 						</view>
 					</view>
 				</view>
 				<view class="control_timing">
 					<p class="title_p">自清虫定时(min)</p>
 					<view class="slider">
-						<view class="" style="width: 90%;padding-top: 18rpx;">
-							<u-slider v-model="condatas.clt_t" min="0" max="100" step="1" active-color="#58C876"></u-slider>
+						<view class="" style="width: 100%;padding-top: 18rpx;">
+							<slider  v-model="condatas.clt_t" min="0" max="120" step="1" show-value block-size="18" activeColor="#57C878" @changing="changing2"></slider>
 						</view>
-						<view class="" style="width: 10%;text-align: center;">
-							{{condatas.clt_t || 0}}
+					</view>
+					<view class="qingchong" v-if="allqingchong">
+						<view class="qingchongbox" @click="suzumusi">
+							清 虫
 						</view>
 					</view>
 				</view>
@@ -92,7 +91,10 @@
 	export default {
 		data() {
 			return {
-				condatas: {},
+				myuid:"",
+				condatas: {
+					dat_f:"",
+				},
 				checked1: false,
 				show1: false,
 				show2: false,
@@ -144,7 +146,9 @@
 					minute: false,
 					second: false
 				},
-				myuser_type:false
+				myuser_type:false,
+				d_id:"",
+				allqingchong:false
 			}
 		},
 		methods: { //forecast.send_control.device_control_info
@@ -235,17 +239,72 @@
 					this.reorup(obj)
 			},
 			ensure() {
-				let str = JSON.stringify(this.condatas)
-				console.log(str)
+				// var obj = this.condatas
+				console.log(this.condatas)
+				var obj = {}
+				for(var key in this.condatas){
+					if(key == "dat_f"){
+						obj["dattim"] = this.condatas[key]
+					}else if(key == "clt_t"){
+						obj["clt"] = this.condatas[key]
+					}else{
+						obj[key] = this.condatas[key]
+					}
+				}
+				let str = JSON.stringify(obj)
 				this.controlby(str)
 				this.clickLeft()
-			}
+			},
+			async getworm() {
+				const res = await this.$myRequest({
+					url: '/api/api_gateway?method=forecast.send_control.clear_insects_permission',
+					data: {}
+				})
+				console.log(res)
+				this.allqingchong = res[0] == 1 ? true : false;
+			},
+			async suzumusi(){
+				const res = await this.$myRequest({
+					url: '/api/api_gateway?method=forecast.send_control.device_control',
+					data: {
+						config: '{"cmd":"ctr_clear"}',
+						d_id: this.d_id,
+						device_type_id: "2",
+						req: "ctr_clear",
+					}
+				})
+				// console.log(res)
+				if (res == true) {
+					uni.showToast({
+						title: '指令下发成功!'
+					});
+				} else {
+					uni.showToast({
+						title: '指令下发失败!'
+					});
+				}
+			},
+			changing(e){
+				// console.log(e.detail.value)
+				this.condatas.dat_f = e.detail.value
+			},
+			changing2(e){
+				// console.log(e.detail.value)
+				this.condatas.clt_t = e.detail.value
+			},
 		},
 		onLoad(option) {
 			this.$forceUpdate()
+			this.getworm()
 			this.controldata(option.id)
 			this.d_id = option.id
 			uni.getStorage({
+				key: "myuid",
+				success: (res) => {
+					this.myuid = res.data
+				}
+			})
+			uni.getStorage({
 				key: "myuser_type",
 				success: (res) => {
 					if (Number(res.data) == 1) {
@@ -287,6 +346,9 @@
 			padding: 0 30rpx 0 0;
 			margin-left: 24rpx;
 			margin-bottom: 20rpx;
+			/deep/uni-slider{
+				margin: 0 !important;
+			}
 		}
 
 		.control_restart {
@@ -362,4 +424,18 @@
 			border-radius: 30rpx;
 		}
 	}
+	.qingchong{
+		width: 90%;
+		margin: 10px auto;
+		text-align: right;
+		display: flex;
+		justify-content: flex-end;
+		.qingchongbox{
+			padding: 2px 8px 3px 8px;
+			background-color: #28AE4F;
+			color: #fff;
+			border-radius: 5px;
+			// line-height: 27px;
+		}
+	}
 </style>

+ 32 - 3
pages/prevention/index.vue

@@ -16,6 +16,9 @@
 			<view class="loading" v-if="loadingtf">
 				<image src="../../static/images/ajax-loader.gif" mode="" class="img"></image>
 			</view>
+			<view class="wormdelbox">
+				一键清虫
+			</view>
 			<view class="prevents">
 				<view class="prevents_item" v-for="item,index in eqlistdata" :key="index" @click="eqdetails(item)">
 					<image
@@ -38,7 +41,8 @@
 				</view>
 			</view>
 		</view>
-		<u-modal v-model="show" :title="title" :showConfirmButton="false" :title-style="{'text-align':'left','padding-left':'10px','font-weight':700}" :mask-close-able="true">
+		<u-modal v-model="show" :title="title" :showConfirmButton="false"
+			:title-style="{'text-align':'left','padding-left':'10px','font-weight':700}" :mask-close-able="true">
 			<view class="slot-content">
 				<rich-text :nodes="content"></rich-text>
 			</view>
@@ -48,6 +52,9 @@
 				<image src="../../static/images/1.png" mode="" class="img0"></image>
 			</view>
 			<view class="more">
+				<view class="box" @click="allwormdel" v-show="allqingchong && filtrateTF">
+					<p>清虫</p>
+				</view>
 				<view class="box" @click="online" v-show="filtrateTF">
 					<p>在线</p>
 				</view>
@@ -83,7 +90,8 @@
 				loadingtf: false, //loading
 				show: false,
 				title: "",
-				content: ""
+				content: "",
+				allqingchong: false
 			}
 		},
 		methods: {
@@ -173,7 +181,8 @@
 				// console.log(this)
 				this.show = true
 				this.title = e.device_expiretext
-				this.content = `<p style="padding-left:10px;margin:10px 0;font-size:14px;">到期时间  ${this.timezhuan(e.device_expire_time)}
+				this.content =
+					`<p style="padding-left:10px;margin:10px 0;font-size:14px;">到期时间  ${this.timezhuan(e.device_expire_time)}
 				</p><p style="font-size:14px;text-align:right;color:#3C84FE;margin-bottom:10px;padding-right:10px">注:请前往PC端进行充值</p>`
 			},
 			timezhuan(time) {
@@ -189,8 +198,28 @@
 				let sec = date.getSeconds()
 				return `${y}-${fun(m)}-${fun(d)} ${fun(h)}:${fun(min)}:${fun(sec)}`
 			},
+			async getworm() {
+				const res = await this.$myRequest({
+					url: '/api/api_gateway?method=forecast.send_control.clear_insects_permission',
+					data: {}
+				})
+				console.log(res)
+				this.allqingchong = res[1] == 1 ? true : false;
+			},
+			async allwormdel() {
+				const res = await this.$myRequest({
+					url: '/api/api_gateway?method=forecast.send_control.clear_insects',
+					data: {}
+				})
+				console.log(res)
+				uni.showToast({
+					title: res ? "指令下发成功" : "指令下发失败",
+					icon: "none"
+				})
+			}
 		},
 		onLoad() {
+			this.getworm()
 			this.eqlist()
 		},
 		onReachBottom() {

+ 174 - 0
pages/prevention/search.vue

@@ -0,0 +1,174 @@
+<template>
+	<view>
+		<view class="status_bar"></view>
+		<view class="" style="position: relative;top: 44px;">
+			<view style="position: fixed;z-index: 100;">
+				<uni-nav-bar @clickLeft="clickLeft" left-icon="back" left-text="返回"></uni-nav-bar>
+				<view class="search_top_input">
+					<input type="text" value="" placeholder="请输入设备ID" v-model="imports" @input="searchinp" />
+					<u-icon name="search" size="40" class="icon" @click="search"></u-icon>
+				</view>
+			</view>
+			<view class="prevents">
+				<view class="prevents_item" v-for="item,index in eqlistdata" :key="index" @click="eqdetails(item)">
+					<image :src="item.is_online==1?'http://static.yfpyx.com/bigdata_app/image/prevention/6.png':'http://static.yfpyx.com/bigdata_app/image/prevention/7.png'"
+					 mode="" class="prevents_item_img"></image>
+					<view class="prevents_item_top">
+						<p>设备 ID:{{item.imei}}</p>
+						<p :class="item.is_online==1?'green':'red'" v-text="item.is_online==1?'在线':'离线'"></p>
+					</view>
+					<view class="prevents_item_bot">
+						<p>设备名称:{{item.device_name==""?"无":item.device_name}}</p>
+						<p>最新上报时间:{{item.addtime|timeFormat()}}</p>
+					</view>
+				</view>
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+	import {
+		Debounce,
+		Throttle
+	} from "../../util/anitthro.js"
+	export default {
+		data() {
+			return {
+				imports: '',
+				eqlistdata: [],
+				page: 1,
+				size: 10,
+				show: false,
+				value: '',
+				options1: [{
+						text: "杀虫灯",
+						id: 2
+					},
+					{
+						text: "虫情测报",
+						id: 3
+					},
+					{
+						text: "孢子仪",
+						id: 7
+					},
+					{
+						text: "性诱设备",
+						id: 4
+					},
+				]
+			}
+		},
+		methods: {
+			async eqlist() { //设备列表
+				const res = await this.$myRequest({
+					url: '/api/api_gateway?method=forecast.worm_lamp.lamp_list',
+					data: {
+						device_type_id: 2,
+						page: this.page,
+						size: this.size,
+						device_id: this.imports
+					}
+				})
+				this.eqlistdata = this.eqlistdata.concat(res.data)
+				console.log(this.eqlistdata)
+			},
+			clickLeft() {
+				uni.navigateBack({
+					delta: 1
+				})
+			},
+			search() {
+				this.eqlistdata = []
+				this.eqlist()
+			},
+			searchinp() {
+				Debounce(() => {
+					this.eqlistdata = []
+					this.eqlist()
+				}, 1000)()
+			},
+			actionSheetCallback(index) { //选择框
+				this.value = this.options1[index].text;
+				// this.id = this.options1[index].id
+			},
+			eqdetails(data) {
+				uni.navigateTo({
+					url: "./equipmentdetails?shebei=" + JSON.stringify(data)
+				})
+			}
+		}
+	}
+</script>
+
+<style lang="scss">
+	.search_top_input {
+		width: 80%;
+		height: 54rpx;
+		background-color: #E4E4E4;
+		border-radius: 27rpx;
+		position: absolute;
+		top: 18rpx;
+		right: 18rpx;
+		padding-top: 8rpx;
+		box-sizing: border-box;
+		input {
+			width: 85%;
+			text-indent: 1rem;
+			font-size: 26rpx;
+		}
+
+		.icon {
+			position: absolute;
+			top: 8rpx;
+			right: 26rpx;
+		}
+	}
+
+	.prevents {
+		width: 100%;
+		position: absolute;
+		top: 54px;
+
+		.prevents_item {
+			width: 95%;
+			margin: 0 auto 30rpx;
+			border-radius: 10rpx;
+			box-shadow: 0 0 10rpx #bcb9ca;
+			padding: 20rpx 40rpx 20rpx 80rpx;
+			position: relative;
+			box-sizing: border-box;
+			.prevents_item_img {
+				width: 30rpx;
+				height: 50rpx;
+				position: absolute;
+				top: -4rpx;
+				left: 30rpx;
+			}
+
+			.prevents_item_top {
+				display: flex;
+				justify-content: space-between;
+				height: 60rpx;
+				border-bottom: 2rpx solid #F4F4F4;
+				line-height: 60rpx;
+				font-size: 26rpx;
+
+				.red {
+					color: #ff0000;
+				}
+
+				.green {
+					color: #7DBB91;
+				}
+			}
+
+			.prevents_item_bot {
+				margin-top: 20rpx;
+				font-size: 26rpx;
+				color: #BDBDBD;
+			}
+		}
+	}
+</style>

+ 36 - 7
pages/prevention/ucharts.vue

@@ -35,7 +35,7 @@
 					disable-scroll=true
 					:style="{'width':cWidth*pixelRatio+'px','height':cHeight*pixelRatio+'px', 'transform': 'scale('+(1/pixelRatio)+')','margin-left':-cWidth*(pixelRatio-1)/2+'px','margin-top':-cHeight*(pixelRatio-1)/2+'px'}"></canvas>
 			</view>
-			<view class="shuju_two">
+			<view class="shuju_two" v-if="allqingchong">
 				<view class="canvastishi" v-if="!canvastishiTF && !dataloadingtf">
 					暂无数据
 				</view>
@@ -47,12 +47,12 @@
 					disable-scroll=true
 					:style="{'width':cWidth*pixelRatio+'px','height':cHeight*pixelRatio+'px', 'transform': 'scale('+(1/pixelRatio)+')','margin-left':-cWidth*(pixelRatio-1)/2+'px','margin-top':-cHeight*(pixelRatio-1)/2+'px'}"></canvas>
 			</view>
-			<view class="refresh" @click="refresh">
+			<view class="refresh" @click="refresh" :style="{'top': allqingchong?'1380rpx':'790rpx'}">
 				刷 新
 			</view>
-			<view class="condition">
+			<view class="condition" :style="{'top': allqingchong?'1450rpx':'870rpx'}">
 				<scroll-view scroll-top="0" scroll-x="true" class="scroll-X">
-					<table class="table">
+					<table class="table" v-if="allqingchong">
 						<tr class="tr">
 							<th class="th" v-for="(item,index) in thdata" :key="'a'+index">{{item}}</th>
 						</tr>
@@ -74,6 +74,25 @@
 							<td class="td" v-for="item in 12">暂无数据</td>
 						</tr>
 					</table>
+					<table class="table2" v-else>
+						<tr class="tr">
+							<th class="th" v-for="(item,index) in thdata2" :key="'a'+index">{{item}}</th>
+						</tr>
+						<tr class="tr" v-for="(items,indexs) in eqlistdata" :key="'b'+indexs" v-if="forbidden">
+							<td class="td">{{items.d_h_t.addtime|timeFormat()}}</td>
+							<td class="td">{{items.d_h_t.ds==0?"关机":"开机"}}</td>
+							<td class="td">{{items.d_h_t.ws==0?"待机":(items.d_h_t.ws==1?"工作":"充电")}}</td>
+							<td class="td">{{items.d_h_t.tps==0?"正常":"保护"}}</td>
+							<td class="td">{{items.d_h_t.tt}}</td>
+							<td class="td">{{items.d_h_t.at==""?"--":items.d_h_t.at}}</td>
+							<td class="td">{{items.d_h_t.ah==""?"--":items.d_h_t.ah}}</td>
+							<td class="td">{{items.d_h_t.cv}}</td>
+							<td class="td">{{items.d_h_t.bv}}</td>
+						</tr>
+						<tr class="tr" v-if="!forbidden">
+							<td class="td" v-for="item in 12">暂无数据</td>
+						</tr>
+					</table>
 				</scroll-view>
 				<view class="pagenumber">
 					<button @click="prev">上一页</button>
@@ -104,6 +123,9 @@
 				thdata: ["上报时间", "设备开关", "工作状态", "雨控状态", "温控状态", "倾倒状态", "定时(h)", "电击次数", "温度(℃)", "湿度(%)", "充电电压(v)",
 					"电池电压(v)",
 				],
+				thdata2: ["上报时间", "设备开关", "工作状态", "温控状态", "定时(h)", "温度(℃)", "湿度(%)", "充电电压(v)",
+					"电池电压(v)",
+				],
 				eqlistdata: [],
 				cWidth: '400',
 				cHeight: '400',
@@ -124,6 +146,7 @@
 				dataloadingtf: true, //加载中提示
 				pagesum: 1,
 				tiemshow: false, //日历选择器
+				allqingchong:false
 			}
 		},
 		// 页面加载执行的函数
@@ -132,6 +155,7 @@
 			this.times.imei = option.imei
 			this.cWidth = uni.upx2px(650);
 			this.cHeight = uni.upx2px(500);
+			this.getworm()
 		},
 		onShow() {
 			presenttime = +new Date();
@@ -429,6 +453,14 @@
 			refresh() { //获取当前时间的数据
 				this.newdata()
 			},
+			async getworm() {
+				const res = await this.$myRequest({
+					url: '/api/api_gateway?method=forecast.send_control.clear_insects_permission',
+					data: {}
+				})
+				console.log(res)
+				this.allqingchong = res[2] == 1 ? false : true;
+			},
 		}
 	}
 </script>
@@ -517,7 +549,6 @@
 	.shuju_two {
 		top: 790rpx;
 	}
-
 	.selecttimes {
 		position: absolute;
 		top: 54px;
@@ -548,7 +579,6 @@
 
 	.refresh {
 		position: absolute;
-		top: 1380rpx;
 		left: 5%;
 		width: 160rpx;
 		height: 50rpx;
@@ -561,7 +591,6 @@
 
 	.condition {
 		position: absolute;
-		top: 1450rpx;
 		display: flex;
 		flex-wrap: wrap;
 		width: 90%;

+ 1 - 0
pages/webview.vue

@@ -18,6 +18,7 @@
 		onLoad(options) {
 			this.device_id = options.device_id
 			this.accessToken = options.accessToken
+			// this.url = "http://8.136.98.49/#/recognition"
 			this.url = "/static/h52.html?device_id=" + this.device_id + "&accessToken=" + this.accessToken
 			// uni.setStorage({
 			// 	key: 'obj',

+ 539 - 0
static/font/demo.css

@@ -0,0 +1,539 @@
+/* Logo 字体 */
+@font-face {
+  font-family: "iconfont logo";
+  src: url('https://at.alicdn.com/t/font_985780_km7mi63cihi.eot?t=1545807318834');
+  src: url('https://at.alicdn.com/t/font_985780_km7mi63cihi.eot?t=1545807318834#iefix') format('embedded-opentype'),
+    url('https://at.alicdn.com/t/font_985780_km7mi63cihi.woff?t=1545807318834') format('woff'),
+    url('https://at.alicdn.com/t/font_985780_km7mi63cihi.ttf?t=1545807318834') format('truetype'),
+    url('https://at.alicdn.com/t/font_985780_km7mi63cihi.svg?t=1545807318834#iconfont') format('svg');
+}
+
+.logo {
+  font-family: "iconfont logo";
+  font-size: 160px;
+  font-style: normal;
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+}
+
+/* tabs */
+.nav-tabs {
+  position: relative;
+}
+
+.nav-tabs .nav-more {
+  position: absolute;
+  right: 0;
+  bottom: 0;
+  height: 42px;
+  line-height: 42px;
+  color: #666;
+}
+
+#tabs {
+  border-bottom: 1px solid #eee;
+}
+
+#tabs li {
+  cursor: pointer;
+  width: 100px;
+  height: 40px;
+  line-height: 40px;
+  text-align: center;
+  font-size: 16px;
+  border-bottom: 2px solid transparent;
+  position: relative;
+  z-index: 1;
+  margin-bottom: -1px;
+  color: #666;
+}
+
+
+#tabs .active {
+  border-bottom-color: #f00;
+  color: #222;
+}
+
+.tab-container .content {
+  display: none;
+}
+
+/* 页面布局 */
+.main {
+  padding: 30px 100px;
+  width: 960px;
+  margin: 0 auto;
+}
+
+.main .logo {
+  color: #333;
+  text-align: left;
+  margin-bottom: 30px;
+  line-height: 1;
+  height: 110px;
+  margin-top: -50px;
+  overflow: hidden;
+  *zoom: 1;
+}
+
+.main .logo a {
+  font-size: 160px;
+  color: #333;
+}
+
+.helps {
+  margin-top: 40px;
+}
+
+.helps pre {
+  padding: 20px;
+  margin: 10px 0;
+  border: solid 1px #e7e1cd;
+  background-color: #fffdef;
+  overflow: auto;
+}
+
+.icon_lists {
+  width: 100% !important;
+  overflow: hidden;
+  *zoom: 1;
+}
+
+.icon_lists li {
+  width: 100px;
+  margin-bottom: 10px;
+  margin-right: 20px;
+  text-align: center;
+  list-style: none !important;
+  cursor: default;
+}
+
+.icon_lists li .code-name {
+  line-height: 1.2;
+}
+
+.icon_lists .icon {
+  display: block;
+  height: 100px;
+  line-height: 100px;
+  font-size: 42px;
+  margin: 10px auto;
+  color: #333;
+  -webkit-transition: font-size 0.25s linear, width 0.25s linear;
+  -moz-transition: font-size 0.25s linear, width 0.25s linear;
+  transition: font-size 0.25s linear, width 0.25s linear;
+}
+
+.icon_lists .icon:hover {
+  font-size: 100px;
+}
+
+.icon_lists .svg-icon {
+  /* 通过设置 font-size 来改变图标大小 */
+  width: 1em;
+  /* 图标和文字相邻时,垂直对齐 */
+  vertical-align: -0.15em;
+  /* 通过设置 color 来改变 SVG 的颜色/fill */
+  fill: currentColor;
+  /* path 和 stroke 溢出 viewBox 部分在 IE 下会显示
+      normalize.css 中也包含这行 */
+  overflow: hidden;
+}
+
+.icon_lists li .name,
+.icon_lists li .code-name {
+  color: #666;
+}
+
+/* markdown 样式 */
+.markdown {
+  color: #666;
+  font-size: 14px;
+  line-height: 1.8;
+}
+
+.highlight {
+  line-height: 1.5;
+}
+
+.markdown img {
+  vertical-align: middle;
+  max-width: 100%;
+}
+
+.markdown h1 {
+  color: #404040;
+  font-weight: 500;
+  line-height: 40px;
+  margin-bottom: 24px;
+}
+
+.markdown h2,
+.markdown h3,
+.markdown h4,
+.markdown h5,
+.markdown h6 {
+  color: #404040;
+  margin: 1.6em 0 0.6em 0;
+  font-weight: 500;
+  clear: both;
+}
+
+.markdown h1 {
+  font-size: 28px;
+}
+
+.markdown h2 {
+  font-size: 22px;
+}
+
+.markdown h3 {
+  font-size: 16px;
+}
+
+.markdown h4 {
+  font-size: 14px;
+}
+
+.markdown h5 {
+  font-size: 12px;
+}
+
+.markdown h6 {
+  font-size: 12px;
+}
+
+.markdown hr {
+  height: 1px;
+  border: 0;
+  background: #e9e9e9;
+  margin: 16px 0;
+  clear: both;
+}
+
+.markdown p {
+  margin: 1em 0;
+}
+
+.markdown>p,
+.markdown>blockquote,
+.markdown>.highlight,
+.markdown>ol,
+.markdown>ul {
+  width: 80%;
+}
+
+.markdown ul>li {
+  list-style: circle;
+}
+
+.markdown>ul li,
+.markdown blockquote ul>li {
+  margin-left: 20px;
+  padding-left: 4px;
+}
+
+.markdown>ul li p,
+.markdown>ol li p {
+  margin: 0.6em 0;
+}
+
+.markdown ol>li {
+  list-style: decimal;
+}
+
+.markdown>ol li,
+.markdown blockquote ol>li {
+  margin-left: 20px;
+  padding-left: 4px;
+}
+
+.markdown code {
+  margin: 0 3px;
+  padding: 0 5px;
+  background: #eee;
+  border-radius: 3px;
+}
+
+.markdown strong,
+.markdown b {
+  font-weight: 600;
+}
+
+.markdown>table {
+  border-collapse: collapse;
+  border-spacing: 0px;
+  empty-cells: show;
+  border: 1px solid #e9e9e9;
+  width: 95%;
+  margin-bottom: 24px;
+}
+
+.markdown>table th {
+  white-space: nowrap;
+  color: #333;
+  font-weight: 600;
+}
+
+.markdown>table th,
+.markdown>table td {
+  border: 1px solid #e9e9e9;
+  padding: 8px 16px;
+  text-align: left;
+}
+
+.markdown>table th {
+  background: #F7F7F7;
+}
+
+.markdown blockquote {
+  font-size: 90%;
+  color: #999;
+  border-left: 4px solid #e9e9e9;
+  padding-left: 0.8em;
+  margin: 1em 0;
+}
+
+.markdown blockquote p {
+  margin: 0;
+}
+
+.markdown .anchor {
+  opacity: 0;
+  transition: opacity 0.3s ease;
+  margin-left: 8px;
+}
+
+.markdown .waiting {
+  color: #ccc;
+}
+
+.markdown h1:hover .anchor,
+.markdown h2:hover .anchor,
+.markdown h3:hover .anchor,
+.markdown h4:hover .anchor,
+.markdown h5:hover .anchor,
+.markdown h6:hover .anchor {
+  opacity: 1;
+  display: inline-block;
+}
+
+.markdown>br,
+.markdown>p>br {
+  clear: both;
+}
+
+
+.hljs {
+  display: block;
+  background: white;
+  padding: 0.5em;
+  color: #333333;
+  overflow-x: auto;
+}
+
+.hljs-comment,
+.hljs-meta {
+  color: #969896;
+}
+
+.hljs-string,
+.hljs-variable,
+.hljs-template-variable,
+.hljs-strong,
+.hljs-emphasis,
+.hljs-quote {
+  color: #df5000;
+}
+
+.hljs-keyword,
+.hljs-selector-tag,
+.hljs-type {
+  color: #a71d5d;
+}
+
+.hljs-literal,
+.hljs-symbol,
+.hljs-bullet,
+.hljs-attribute {
+  color: #0086b3;
+}
+
+.hljs-section,
+.hljs-name {
+  color: #63a35c;
+}
+
+.hljs-tag {
+  color: #333333;
+}
+
+.hljs-title,
+.hljs-attr,
+.hljs-selector-id,
+.hljs-selector-class,
+.hljs-selector-attr,
+.hljs-selector-pseudo {
+  color: #795da3;
+}
+
+.hljs-addition {
+  color: #55a532;
+  background-color: #eaffea;
+}
+
+.hljs-deletion {
+  color: #bd2c00;
+  background-color: #ffecec;
+}
+
+.hljs-link {
+  text-decoration: underline;
+}
+
+/* 代码高亮 */
+/* PrismJS 1.15.0
+https://prismjs.com/download.html#themes=prism&languages=markup+css+clike+javascript */
+/**
+ * prism.js default theme for JavaScript, CSS and HTML
+ * Based on dabblet (http://dabblet.com)
+ * @author Lea Verou
+ */
+code[class*="language-"],
+pre[class*="language-"] {
+  color: black;
+  background: none;
+  text-shadow: 0 1px white;
+  font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace;
+  text-align: left;
+  white-space: pre;
+  word-spacing: normal;
+  word-break: normal;
+  word-wrap: normal;
+  line-height: 1.5;
+
+  -moz-tab-size: 4;
+  -o-tab-size: 4;
+  tab-size: 4;
+
+  -webkit-hyphens: none;
+  -moz-hyphens: none;
+  -ms-hyphens: none;
+  hyphens: none;
+}
+
+pre[class*="language-"]::-moz-selection,
+pre[class*="language-"] ::-moz-selection,
+code[class*="language-"]::-moz-selection,
+code[class*="language-"] ::-moz-selection {
+  text-shadow: none;
+  background: #b3d4fc;
+}
+
+pre[class*="language-"]::selection,
+pre[class*="language-"] ::selection,
+code[class*="language-"]::selection,
+code[class*="language-"] ::selection {
+  text-shadow: none;
+  background: #b3d4fc;
+}
+
+@media print {
+
+  code[class*="language-"],
+  pre[class*="language-"] {
+    text-shadow: none;
+  }
+}
+
+/* Code blocks */
+pre[class*="language-"] {
+  padding: 1em;
+  margin: .5em 0;
+  overflow: auto;
+}
+
+:not(pre)>code[class*="language-"],
+pre[class*="language-"] {
+  background: #f5f2f0;
+}
+
+/* Inline code */
+:not(pre)>code[class*="language-"] {
+  padding: .1em;
+  border-radius: .3em;
+  white-space: normal;
+}
+
+.token.comment,
+.token.prolog,
+.token.doctype,
+.token.cdata {
+  color: slategray;
+}
+
+.token.punctuation {
+  color: #999;
+}
+
+.namespace {
+  opacity: .7;
+}
+
+.token.property,
+.token.tag,
+.token.boolean,
+.token.number,
+.token.constant,
+.token.symbol,
+.token.deleted {
+  color: #905;
+}
+
+.token.selector,
+.token.attr-name,
+.token.string,
+.token.char,
+.token.builtin,
+.token.inserted {
+  color: #690;
+}
+
+.token.operator,
+.token.entity,
+.token.url,
+.language-css .token.string,
+.style .token.string {
+  color: #9a6e3a;
+  background: hsla(0, 0%, 100%, .5);
+}
+
+.token.atrule,
+.token.attr-value,
+.token.keyword {
+  color: #07a;
+}
+
+.token.function,
+.token.class-name {
+  color: #DD4A68;
+}
+
+.token.regex,
+.token.important,
+.token.variable {
+  color: #e90;
+}
+
+.token.important,
+.token.bold {
+  font-weight: bold;
+}
+
+.token.italic {
+  font-style: italic;
+}
+
+.token.entity {
+  cursor: help;
+}

Разница между файлами не показана из-за своего большого размера
+ 1850 - 0
static/font/demo_index.html


BIN
static/font/iconfont.eot


Разница между файлами не показана из-за своего большого размера
+ 1 - 0
static/font/iconfont.js


+ 520 - 0
static/font/iconfont.json

@@ -0,0 +1,520 @@
+{
+  "id": "1738837",
+  "name": "农业大数据",
+  "font_family": "iconfont",
+  "css_prefix_text": "icon-",
+  "description": "",
+  "glyphs": [
+    {
+      "icon_id": "5064096",
+      "name": "统计",
+      "font_class": "tongji2",
+      "unicode": "e646",
+      "unicode_decimal": 58950
+    },
+    {
+      "icon_id": "9241144",
+      "name": "手写签批",
+      "font_class": "iconzhengli_shouxieqianpi",
+      "unicode": "e648",
+      "unicode_decimal": 58952
+    },
+    {
+      "icon_id": "13173807",
+      "name": "识别",
+      "font_class": "shibie",
+      "unicode": "e603",
+      "unicode_decimal": 58883
+    },
+    {
+      "icon_id": "15726936",
+      "name": "统计",
+      "font_class": "tongji1",
+      "unicode": "e642",
+      "unicode_decimal": 58946
+    },
+    {
+      "icon_id": "20082758",
+      "name": "可视化大屏",
+      "font_class": "keshihuadaping",
+      "unicode": "e61c",
+      "unicode_decimal": 58908
+    },
+    {
+      "icon_id": "20082759",
+      "name": "退出关闭",
+      "font_class": "tuichuguanbi",
+      "unicode": "e61d",
+      "unicode_decimal": 58909
+    },
+    {
+      "icon_id": "20082258",
+      "name": "照片查看",
+      "font_class": "zhaopianchakan",
+      "unicode": "e61b",
+      "unicode_decimal": 58907
+    },
+    {
+      "icon_id": "20081037",
+      "name": "图标任务",
+      "font_class": "tubiaorenwu",
+      "unicode": "e61a",
+      "unicode_decimal": 58906
+    },
+    {
+      "icon_id": "19799572",
+      "name": "定位",
+      "font_class": "dingwei1",
+      "unicode": "e619",
+      "unicode_decimal": 58905
+    },
+    {
+      "icon_id": "19798147",
+      "name": "基地管理",
+      "font_class": "jidiguanli",
+      "unicode": "e618",
+      "unicode_decimal": 58904
+    },
+    {
+      "icon_id": "19798145",
+      "name": "基地面积",
+      "font_class": "jidimianji",
+      "unicode": "e617",
+      "unicode_decimal": 58903
+    },
+    {
+      "icon_id": "19798140",
+      "name": "建立时间",
+      "font_class": "jianlishijian",
+      "unicode": "e60d",
+      "unicode_decimal": 58893
+    },
+    {
+      "icon_id": "17654821",
+      "name": "录像",
+      "font_class": "luxiang",
+      "unicode": "e637",
+      "unicode_decimal": 58935
+    },
+    {
+      "icon_id": "774444",
+      "name": "扳手",
+      "font_class": "banshou",
+      "unicode": "e65c",
+      "unicode_decimal": 58972
+    },
+    {
+      "icon_id": "7335485",
+      "name": "地块",
+      "font_class": "chandi",
+      "unicode": "eb24",
+      "unicode_decimal": 60196
+    },
+    {
+      "icon_id": "7335489",
+      "name": "基础",
+      "font_class": "jichu",
+      "unicode": "eb25",
+      "unicode_decimal": 60197
+    },
+    {
+      "icon_id": "7335622",
+      "name": "迟到",
+      "font_class": "chidao",
+      "unicode": "eb44",
+      "unicode_decimal": 60228
+    },
+    {
+      "icon_id": "1391282",
+      "name": "日历",
+      "font_class": "rili",
+      "unicode": "e609",
+      "unicode_decimal": 58889
+    },
+    {
+      "icon_id": "5204808",
+      "name": "分类",
+      "font_class": "fenlei",
+      "unicode": "e616",
+      "unicode_decimal": 58902
+    },
+    {
+      "icon_id": "2678622",
+      "name": "全屏",
+      "font_class": "quanping",
+      "unicode": "e656",
+      "unicode_decimal": 58966
+    },
+    {
+      "icon_id": "772252",
+      "name": "扫描 识别 380%",
+      "font_class": "saomiaoshibie380",
+      "unicode": "e686",
+      "unicode_decimal": 59014
+    },
+    {
+      "icon_id": "11893490",
+      "name": "添加",
+      "font_class": "tianjia",
+      "unicode": "e615",
+      "unicode_decimal": 58901
+    },
+    {
+      "icon_id": "16364328",
+      "name": "统计",
+      "font_class": "tongji",
+      "unicode": "e636",
+      "unicode_decimal": 58934
+    },
+    {
+      "icon_id": "17709313",
+      "name": "未命名 -34",
+      "font_class": "weimingming-34",
+      "unicode": "e60b",
+      "unicode_decimal": 58891
+    },
+    {
+      "icon_id": "5327411",
+      "name": "臭虫bug",
+      "font_class": "chouchongbug",
+      "unicode": "e6e1",
+      "unicode_decimal": 59105
+    },
+    {
+      "icon_id": "802969",
+      "name": "楼房",
+      "font_class": "loufang",
+      "unicode": "e64f",
+      "unicode_decimal": 58959
+    },
+    {
+      "icon_id": "4348068",
+      "name": "电脑",
+      "font_class": "diannao1",
+      "unicode": "e623",
+      "unicode_decimal": 58915
+    },
+    {
+      "icon_id": "8835594",
+      "name": "图片",
+      "font_class": "tupian-xianxing",
+      "unicode": "e635",
+      "unicode_decimal": 58933
+    },
+    {
+      "icon_id": "10392628",
+      "name": "详情-",
+      "font_class": "xiangqing-",
+      "unicode": "e608",
+      "unicode_decimal": 58888
+    },
+    {
+      "icon_id": "36107",
+      "name": "面积",
+      "font_class": "mianji",
+      "unicode": "e602",
+      "unicode_decimal": 58882
+    },
+    {
+      "icon_id": "883904",
+      "name": "电话 (2)",
+      "font_class": "dianhua2",
+      "unicode": "e611",
+      "unicode_decimal": 58897
+    },
+    {
+      "icon_id": "1183130",
+      "name": "定位",
+      "font_class": "dingwei",
+      "unicode": "e675",
+      "unicode_decimal": 58997
+    },
+    {
+      "icon_id": "6129144",
+      "name": "102绑定",
+      "font_class": "bangding",
+      "unicode": "e784",
+      "unicode_decimal": 59268
+    },
+    {
+      "icon_id": "6970030",
+      "name": "用户",
+      "font_class": "yonghu11",
+      "unicode": "e705",
+      "unicode_decimal": 59141
+    },
+    {
+      "icon_id": "1106935",
+      "name": "雨",
+      "font_class": "yu",
+      "unicode": "e63a",
+      "unicode_decimal": 58938
+    },
+    {
+      "icon_id": "2155826",
+      "name": "温度",
+      "font_class": "thermometer_icon",
+      "unicode": "e67a",
+      "unicode_decimal": 59002
+    },
+    {
+      "icon_id": "4236632",
+      "name": "湿度",
+      "font_class": "shidu",
+      "unicode": "e60a",
+      "unicode_decimal": 58890
+    },
+    {
+      "icon_id": "7983631",
+      "name": "摄像头",
+      "font_class": "xingzhuang",
+      "unicode": "e614",
+      "unicode_decimal": 58900
+    },
+    {
+      "icon_id": "13638685",
+      "name": "电",
+      "font_class": "dian",
+      "unicode": "e655",
+      "unicode_decimal": 58965
+    },
+    {
+      "icon_id": "13638743",
+      "name": "温度",
+      "font_class": "wendu",
+      "unicode": "e660",
+      "unicode_decimal": 58976
+    },
+    {
+      "icon_id": "14095260",
+      "name": "定时",
+      "font_class": "dingshi",
+      "unicode": "e77e",
+      "unicode_decimal": 59262
+    },
+    {
+      "icon_id": "397065",
+      "name": "诱虫灯",
+      "font_class": "fangzhi",
+      "unicode": "e75c",
+      "unicode_decimal": 59228
+    },
+    {
+      "icon_id": "519489",
+      "name": "首页",
+      "font_class": "shouye",
+      "unicode": "e61e",
+      "unicode_decimal": 58910
+    },
+    {
+      "icon_id": "552767",
+      "name": "农药化肥",
+      "font_class": "nongchangguanli",
+      "unicode": "e62c",
+      "unicode_decimal": 58924
+    },
+    {
+      "icon_id": "689284",
+      "name": "设置 设定 配置 扳手",
+      "font_class": "shouhou",
+      "unicode": "e80e",
+      "unicode_decimal": 59406
+    },
+    {
+      "icon_id": "1119123",
+      "name": "系统",
+      "font_class": "xitong",
+      "unicode": "e60f",
+      "unicode_decimal": 58895
+    },
+    {
+      "icon_id": "1320048",
+      "name": "数据统计",
+      "font_class": "shujuzhanshi",
+      "unicode": "e621",
+      "unicode_decimal": 58913
+    },
+    {
+      "icon_id": "3483768",
+      "name": "地址",
+      "font_class": "jidi",
+      "unicode": "e672",
+      "unicode_decimal": 58994
+    },
+    {
+      "icon_id": "6756289",
+      "name": "专家",
+      "font_class": "zhuanjia",
+      "unicode": "e607",
+      "unicode_decimal": 58887
+    },
+    {
+      "icon_id": "7562834",
+      "name": "农事行为",
+      "font_class": "nongshiguanli",
+      "unicode": "e60c",
+      "unicode_decimal": 58892
+    },
+    {
+      "icon_id": "10544904",
+      "name": "多云转晴",
+      "font_class": "huanjingjiance",
+      "unicode": "e610",
+      "unicode_decimal": 58896
+    },
+    {
+      "icon_id": "13190141",
+      "name": "设备",
+      "font_class": "shebei",
+      "unicode": "e622",
+      "unicode_decimal": 58914
+    },
+    {
+      "icon_id": "13837385",
+      "name": "虫情监测 - 简",
+      "font_class": "cebaoguanli",
+      "unicode": "e776",
+      "unicode_decimal": 59254
+    },
+    {
+      "icon_id": "15282842",
+      "name": "树苗",
+      "font_class": "suyuan",
+      "unicode": "e6e8",
+      "unicode_decimal": 59112
+    },
+    {
+      "icon_id": "15631425",
+      "name": "监控",
+      "font_class": "jiankong",
+      "unicode": "e629",
+      "unicode_decimal": 58921
+    },
+    {
+      "icon_id": "992522",
+      "name": "信息",
+      "font_class": "xinxi1",
+      "unicode": "e64b",
+      "unicode_decimal": 58955
+    },
+    {
+      "icon_id": "1135940",
+      "name": "用户",
+      "font_class": "yonghu1",
+      "unicode": "e612",
+      "unicode_decimal": 58898
+    },
+    {
+      "icon_id": "7501066",
+      "name": "密码",
+      "font_class": "mima1",
+      "unicode": "e620",
+      "unicode_decimal": 58912
+    },
+    {
+      "icon_id": "715831",
+      "name": "电脑",
+      "font_class": "diannao",
+      "unicode": "e605",
+      "unicode_decimal": 58885
+    },
+    {
+      "icon_id": "4186778",
+      "name": "标签",
+      "font_class": "biaoqian",
+      "unicode": "e634",
+      "unicode_decimal": 58932
+    },
+    {
+      "icon_id": "6682541",
+      "name": "地址",
+      "font_class": "dizhi",
+      "unicode": "e606",
+      "unicode_decimal": 58886
+    },
+    {
+      "icon_id": "7404314",
+      "name": "时间",
+      "font_class": "shijian",
+      "unicode": "e77c",
+      "unicode_decimal": 59260
+    },
+    {
+      "icon_id": "8094230",
+      "name": "页面操作",
+      "font_class": "yemiancaozuo",
+      "unicode": "e64e",
+      "unicode_decimal": 58958
+    },
+    {
+      "icon_id": "10995780",
+      "name": "用户",
+      "font_class": "yonghu",
+      "unicode": "e60e",
+      "unicode_decimal": 58894
+    },
+    {
+      "icon_id": "354570",
+      "name": "编辑",
+      "font_class": "iconfontedit",
+      "unicode": "e61f",
+      "unicode_decimal": 58911
+    },
+    {
+      "icon_id": "813727",
+      "name": "充值",
+      "font_class": "chongzhi",
+      "unicode": "e633",
+      "unicode_decimal": 58931
+    },
+    {
+      "icon_id": "1761485",
+      "name": "禁用",
+      "font_class": "jinyong",
+      "unicode": "e641",
+      "unicode_decimal": 58945
+    },
+    {
+      "icon_id": "11391516",
+      "name": "密码",
+      "font_class": "mima",
+      "unicode": "e638",
+      "unicode_decimal": 58936
+    },
+    {
+      "icon_id": "9783463",
+      "name": "文档",
+      "font_class": "wendang",
+      "unicode": "e613",
+      "unicode_decimal": 58899
+    },
+    {
+      "icon_id": "4641118",
+      "name": "删除",
+      "font_class": "shanchu",
+      "unicode": "e625",
+      "unicode_decimal": 58917
+    },
+    {
+      "icon_id": "12685010",
+      "name": "铃",
+      "font_class": "icon_huabanfuben",
+      "unicode": "e62b",
+      "unicode_decimal": 58923
+    },
+    {
+      "icon_id": "2512619",
+      "name": "BAI-屋子",
+      "font_class": "BAI-wuzi",
+      "unicode": "e69c",
+      "unicode_decimal": 59036
+    },
+    {
+      "icon_id": "5387843",
+      "name": "主题_调色盘_o",
+      "font_class": "zhuti_tiaosepan_o",
+      "unicode": "eb6e",
+      "unicode_decimal": 60270
+    }
+  ]
+}

Разница между файлами не показана из-за своего большого размера
+ 245 - 0
static/font/iconfont.svg


BIN
static/font/iconfont.ttf


BIN
static/font/iconfont.woff


BIN
static/font/iconfont.woff2


+ 2 - 1
static/h52.html

@@ -190,7 +190,8 @@
 		}).then((res) => {
 			console.log(res.data)
 			var data = eval("(" + res.data + ")");
-			var hlsHdSrc = data.hlsHd;
+			var hlsHdSrc = data.hls;
+			console.log(hlsHdSrc)
 			var rtmpHdSrc = data.rtmpHd;
 			var playHtml =
 				`<video id="myPlayer" autoplay   poster='' controls playsInline  webkit-playsinline src=${hlsHdSrc}  style="width:100%; height:100%;"></video>`;

BIN
static/images/12.png


BIN
static/images/13.png


BIN
static/images/14.png


BIN
static/images/15.png


BIN
static/images/16.png


BIN
static/images/17.png


BIN
static/images/18.png


BIN
static/images/19.png


BIN
static/images/cb/gaofengqi.png


BIN
static/images/cb/shijianqi.png


BIN
static/images/cb/zhongjianqi.png


Разница между файлами не показана из-за своего большого размера
+ 1052 - 0
static/js/cbd_pest_library.js


BIN
unpackage/cache/apk/__UNI__DBA6730_cm.apk


+ 1 - 5
unpackage/cache/apk/apkurl

@@ -1,5 +1 @@
-<<<<<<< HEAD
-https://ide.dcloud.net.cn/build/download/f4fea6b0-d102-11ec-9936-a9114ee0f763
-=======
-https://ide.dcloud.net.cn/build/download/e6f40ec0-d04c-11ec-8e8d-d9b3e424cb29
->>>>>>> 5414116f2bdb506d174436e6db8052c03bb30109
+https://ide.dcloud.net.cn/build/download/a7f56010-172c-11ed-af7a-dfbd9fdca133

Разница между файлами не показана из-за своего большого размера
+ 1 - 5
unpackage/cache/apk/cmManifestCache.json


+ 3 - 7
unpackage/cache/certdata

@@ -1,7 +1,3 @@
-<<<<<<< HEAD
-andrCertfile=E:/HBuilderX/HBuilderX/plugins/app-safe-pack/Test.keystore
-=======
-andrCertfile=D:/HBuilderX/HBuilderX/plugins/app-safe-pack/Test.keystore
->>>>>>> 5414116f2bdb506d174436e6db8052c03bb30109
-andrCertAlias=android
-andrCertPass=ep/Tdjka4Y7WYqDB6/S7dw==
+andrCertfile=E:/大数据平台app安装包/签名证书/yfzhikong.keystore
+andrCertAlias=testalias
+andrCertPass=uecGPNMV8s+KLcdEgW/MRg==

BIN
unpackage/cache/wgt/__UNI__DBA6730/.manifest/google-keystore.keystore


Разница между файлами не показана из-за своего большого размера
+ 1 - 1
unpackage/cache/wgt/__UNI__DBA6730/__uniappopenlocation.js


Разница между файлами не показана из-за своего большого размера
+ 2 - 6
unpackage/cache/wgt/__UNI__DBA6730/app-config-service.js


Разница между файлами не показана из-за своего большого размера
+ 1 - 5
unpackage/cache/wgt/__UNI__DBA6730/app-service.js


Разница между файлами не показана из-за своего большого размера
+ 1 - 5
unpackage/cache/wgt/__UNI__DBA6730/app-view.js


Разница между файлами не показана из-за своего большого размера
+ 1 - 1
unpackage/cache/wgt/__UNI__DBA6730/manifest.json


+ 539 - 0
unpackage/cache/wgt/__UNI__DBA6730/static/font/demo.css

@@ -0,0 +1,539 @@
+/* Logo 字体 */
+@font-face {
+  font-family: "iconfont logo";
+  src: url('https://at.alicdn.com/t/font_985780_km7mi63cihi.eot?t=1545807318834');
+  src: url('https://at.alicdn.com/t/font_985780_km7mi63cihi.eot?t=1545807318834#iefix') format('embedded-opentype'),
+    url('https://at.alicdn.com/t/font_985780_km7mi63cihi.woff?t=1545807318834') format('woff'),
+    url('https://at.alicdn.com/t/font_985780_km7mi63cihi.ttf?t=1545807318834') format('truetype'),
+    url('https://at.alicdn.com/t/font_985780_km7mi63cihi.svg?t=1545807318834#iconfont') format('svg');
+}
+
+.logo {
+  font-family: "iconfont logo";
+  font-size: 160px;
+  font-style: normal;
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+}
+
+/* tabs */
+.nav-tabs {
+  position: relative;
+}
+
+.nav-tabs .nav-more {
+  position: absolute;
+  right: 0;
+  bottom: 0;
+  height: 42px;
+  line-height: 42px;
+  color: #666;
+}
+
+#tabs {
+  border-bottom: 1px solid #eee;
+}
+
+#tabs li {
+  cursor: pointer;
+  width: 100px;
+  height: 40px;
+  line-height: 40px;
+  text-align: center;
+  font-size: 16px;
+  border-bottom: 2px solid transparent;
+  position: relative;
+  z-index: 1;
+  margin-bottom: -1px;
+  color: #666;
+}
+
+
+#tabs .active {
+  border-bottom-color: #f00;
+  color: #222;
+}
+
+.tab-container .content {
+  display: none;
+}
+
+/* 页面布局 */
+.main {
+  padding: 30px 100px;
+  width: 960px;
+  margin: 0 auto;
+}
+
+.main .logo {
+  color: #333;
+  text-align: left;
+  margin-bottom: 30px;
+  line-height: 1;
+  height: 110px;
+  margin-top: -50px;
+  overflow: hidden;
+  *zoom: 1;
+}
+
+.main .logo a {
+  font-size: 160px;
+  color: #333;
+}
+
+.helps {
+  margin-top: 40px;
+}
+
+.helps pre {
+  padding: 20px;
+  margin: 10px 0;
+  border: solid 1px #e7e1cd;
+  background-color: #fffdef;
+  overflow: auto;
+}
+
+.icon_lists {
+  width: 100% !important;
+  overflow: hidden;
+  *zoom: 1;
+}
+
+.icon_lists li {
+  width: 100px;
+  margin-bottom: 10px;
+  margin-right: 20px;
+  text-align: center;
+  list-style: none !important;
+  cursor: default;
+}
+
+.icon_lists li .code-name {
+  line-height: 1.2;
+}
+
+.icon_lists .icon {
+  display: block;
+  height: 100px;
+  line-height: 100px;
+  font-size: 42px;
+  margin: 10px auto;
+  color: #333;
+  -webkit-transition: font-size 0.25s linear, width 0.25s linear;
+  -moz-transition: font-size 0.25s linear, width 0.25s linear;
+  transition: font-size 0.25s linear, width 0.25s linear;
+}
+
+.icon_lists .icon:hover {
+  font-size: 100px;
+}
+
+.icon_lists .svg-icon {
+  /* 通过设置 font-size 来改变图标大小 */
+  width: 1em;
+  /* 图标和文字相邻时,垂直对齐 */
+  vertical-align: -0.15em;
+  /* 通过设置 color 来改变 SVG 的颜色/fill */
+  fill: currentColor;
+  /* path 和 stroke 溢出 viewBox 部分在 IE 下会显示
+      normalize.css 中也包含这行 */
+  overflow: hidden;
+}
+
+.icon_lists li .name,
+.icon_lists li .code-name {
+  color: #666;
+}
+
+/* markdown 样式 */
+.markdown {
+  color: #666;
+  font-size: 14px;
+  line-height: 1.8;
+}
+
+.highlight {
+  line-height: 1.5;
+}
+
+.markdown img {
+  vertical-align: middle;
+  max-width: 100%;
+}
+
+.markdown h1 {
+  color: #404040;
+  font-weight: 500;
+  line-height: 40px;
+  margin-bottom: 24px;
+}
+
+.markdown h2,
+.markdown h3,
+.markdown h4,
+.markdown h5,
+.markdown h6 {
+  color: #404040;
+  margin: 1.6em 0 0.6em 0;
+  font-weight: 500;
+  clear: both;
+}
+
+.markdown h1 {
+  font-size: 28px;
+}
+
+.markdown h2 {
+  font-size: 22px;
+}
+
+.markdown h3 {
+  font-size: 16px;
+}
+
+.markdown h4 {
+  font-size: 14px;
+}
+
+.markdown h5 {
+  font-size: 12px;
+}
+
+.markdown h6 {
+  font-size: 12px;
+}
+
+.markdown hr {
+  height: 1px;
+  border: 0;
+  background: #e9e9e9;
+  margin: 16px 0;
+  clear: both;
+}
+
+.markdown p {
+  margin: 1em 0;
+}
+
+.markdown>p,
+.markdown>blockquote,
+.markdown>.highlight,
+.markdown>ol,
+.markdown>ul {
+  width: 80%;
+}
+
+.markdown ul>li {
+  list-style: circle;
+}
+
+.markdown>ul li,
+.markdown blockquote ul>li {
+  margin-left: 20px;
+  padding-left: 4px;
+}
+
+.markdown>ul li p,
+.markdown>ol li p {
+  margin: 0.6em 0;
+}
+
+.markdown ol>li {
+  list-style: decimal;
+}
+
+.markdown>ol li,
+.markdown blockquote ol>li {
+  margin-left: 20px;
+  padding-left: 4px;
+}
+
+.markdown code {
+  margin: 0 3px;
+  padding: 0 5px;
+  background: #eee;
+  border-radius: 3px;
+}
+
+.markdown strong,
+.markdown b {
+  font-weight: 600;
+}
+
+.markdown>table {
+  border-collapse: collapse;
+  border-spacing: 0px;
+  empty-cells: show;
+  border: 1px solid #e9e9e9;
+  width: 95%;
+  margin-bottom: 24px;
+}
+
+.markdown>table th {
+  white-space: nowrap;
+  color: #333;
+  font-weight: 600;
+}
+
+.markdown>table th,
+.markdown>table td {
+  border: 1px solid #e9e9e9;
+  padding: 8px 16px;
+  text-align: left;
+}
+
+.markdown>table th {
+  background: #F7F7F7;
+}
+
+.markdown blockquote {
+  font-size: 90%;
+  color: #999;
+  border-left: 4px solid #e9e9e9;
+  padding-left: 0.8em;
+  margin: 1em 0;
+}
+
+.markdown blockquote p {
+  margin: 0;
+}
+
+.markdown .anchor {
+  opacity: 0;
+  transition: opacity 0.3s ease;
+  margin-left: 8px;
+}
+
+.markdown .waiting {
+  color: #ccc;
+}
+
+.markdown h1:hover .anchor,
+.markdown h2:hover .anchor,
+.markdown h3:hover .anchor,
+.markdown h4:hover .anchor,
+.markdown h5:hover .anchor,
+.markdown h6:hover .anchor {
+  opacity: 1;
+  display: inline-block;
+}
+
+.markdown>br,
+.markdown>p>br {
+  clear: both;
+}
+
+
+.hljs {
+  display: block;
+  background: white;
+  padding: 0.5em;
+  color: #333333;
+  overflow-x: auto;
+}
+
+.hljs-comment,
+.hljs-meta {
+  color: #969896;
+}
+
+.hljs-string,
+.hljs-variable,
+.hljs-template-variable,
+.hljs-strong,
+.hljs-emphasis,
+.hljs-quote {
+  color: #df5000;
+}
+
+.hljs-keyword,
+.hljs-selector-tag,
+.hljs-type {
+  color: #a71d5d;
+}
+
+.hljs-literal,
+.hljs-symbol,
+.hljs-bullet,
+.hljs-attribute {
+  color: #0086b3;
+}
+
+.hljs-section,
+.hljs-name {
+  color: #63a35c;
+}
+
+.hljs-tag {
+  color: #333333;
+}
+
+.hljs-title,
+.hljs-attr,
+.hljs-selector-id,
+.hljs-selector-class,
+.hljs-selector-attr,
+.hljs-selector-pseudo {
+  color: #795da3;
+}
+
+.hljs-addition {
+  color: #55a532;
+  background-color: #eaffea;
+}
+
+.hljs-deletion {
+  color: #bd2c00;
+  background-color: #ffecec;
+}
+
+.hljs-link {
+  text-decoration: underline;
+}
+
+/* 代码高亮 */
+/* PrismJS 1.15.0
+https://prismjs.com/download.html#themes=prism&languages=markup+css+clike+javascript */
+/**
+ * prism.js default theme for JavaScript, CSS and HTML
+ * Based on dabblet (http://dabblet.com)
+ * @author Lea Verou
+ */
+code[class*="language-"],
+pre[class*="language-"] {
+  color: black;
+  background: none;
+  text-shadow: 0 1px white;
+  font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace;
+  text-align: left;
+  white-space: pre;
+  word-spacing: normal;
+  word-break: normal;
+  word-wrap: normal;
+  line-height: 1.5;
+
+  -moz-tab-size: 4;
+  -o-tab-size: 4;
+  tab-size: 4;
+
+  -webkit-hyphens: none;
+  -moz-hyphens: none;
+  -ms-hyphens: none;
+  hyphens: none;
+}
+
+pre[class*="language-"]::-moz-selection,
+pre[class*="language-"] ::-moz-selection,
+code[class*="language-"]::-moz-selection,
+code[class*="language-"] ::-moz-selection {
+  text-shadow: none;
+  background: #b3d4fc;
+}
+
+pre[class*="language-"]::selection,
+pre[class*="language-"] ::selection,
+code[class*="language-"]::selection,
+code[class*="language-"] ::selection {
+  text-shadow: none;
+  background: #b3d4fc;
+}
+
+@media print {
+
+  code[class*="language-"],
+  pre[class*="language-"] {
+    text-shadow: none;
+  }
+}
+
+/* Code blocks */
+pre[class*="language-"] {
+  padding: 1em;
+  margin: .5em 0;
+  overflow: auto;
+}
+
+:not(pre)>code[class*="language-"],
+pre[class*="language-"] {
+  background: #f5f2f0;
+}
+
+/* Inline code */
+:not(pre)>code[class*="language-"] {
+  padding: .1em;
+  border-radius: .3em;
+  white-space: normal;
+}
+
+.token.comment,
+.token.prolog,
+.token.doctype,
+.token.cdata {
+  color: slategray;
+}
+
+.token.punctuation {
+  color: #999;
+}
+
+.namespace {
+  opacity: .7;
+}
+
+.token.property,
+.token.tag,
+.token.boolean,
+.token.number,
+.token.constant,
+.token.symbol,
+.token.deleted {
+  color: #905;
+}
+
+.token.selector,
+.token.attr-name,
+.token.string,
+.token.char,
+.token.builtin,
+.token.inserted {
+  color: #690;
+}
+
+.token.operator,
+.token.entity,
+.token.url,
+.language-css .token.string,
+.style .token.string {
+  color: #9a6e3a;
+  background: hsla(0, 0%, 100%, .5);
+}
+
+.token.atrule,
+.token.attr-value,
+.token.keyword {
+  color: #07a;
+}
+
+.token.function,
+.token.class-name {
+  color: #DD4A68;
+}
+
+.token.regex,
+.token.important,
+.token.variable {
+  color: #e90;
+}
+
+.token.important,
+.token.bold {
+  font-weight: bold;
+}
+
+.token.italic {
+  font-style: italic;
+}
+
+.token.entity {
+  cursor: help;
+}

Разница между файлами не показана из-за своего большого размера
+ 1850 - 0
unpackage/cache/wgt/__UNI__DBA6730/static/font/demo_index.html


BIN
unpackage/cache/wgt/__UNI__DBA6730/static/font/iconfont.eot


Разница между файлами не показана из-за своего большого размера
+ 1 - 0
unpackage/cache/wgt/__UNI__DBA6730/static/font/iconfont.js


+ 520 - 0
unpackage/cache/wgt/__UNI__DBA6730/static/font/iconfont.json

@@ -0,0 +1,520 @@
+{
+  "id": "1738837",
+  "name": "农业大数据",
+  "font_family": "iconfont",
+  "css_prefix_text": "icon-",
+  "description": "",
+  "glyphs": [
+    {
+      "icon_id": "5064096",
+      "name": "统计",
+      "font_class": "tongji2",
+      "unicode": "e646",
+      "unicode_decimal": 58950
+    },
+    {
+      "icon_id": "9241144",
+      "name": "手写签批",
+      "font_class": "iconzhengli_shouxieqianpi",
+      "unicode": "e648",
+      "unicode_decimal": 58952
+    },
+    {
+      "icon_id": "13173807",
+      "name": "识别",
+      "font_class": "shibie",
+      "unicode": "e603",
+      "unicode_decimal": 58883
+    },
+    {
+      "icon_id": "15726936",
+      "name": "统计",
+      "font_class": "tongji1",
+      "unicode": "e642",
+      "unicode_decimal": 58946
+    },
+    {
+      "icon_id": "20082758",
+      "name": "可视化大屏",
+      "font_class": "keshihuadaping",
+      "unicode": "e61c",
+      "unicode_decimal": 58908
+    },
+    {
+      "icon_id": "20082759",
+      "name": "退出关闭",
+      "font_class": "tuichuguanbi",
+      "unicode": "e61d",
+      "unicode_decimal": 58909
+    },
+    {
+      "icon_id": "20082258",
+      "name": "照片查看",
+      "font_class": "zhaopianchakan",
+      "unicode": "e61b",
+      "unicode_decimal": 58907
+    },
+    {
+      "icon_id": "20081037",
+      "name": "图标任务",
+      "font_class": "tubiaorenwu",
+      "unicode": "e61a",
+      "unicode_decimal": 58906
+    },
+    {
+      "icon_id": "19799572",
+      "name": "定位",
+      "font_class": "dingwei1",
+      "unicode": "e619",
+      "unicode_decimal": 58905
+    },
+    {
+      "icon_id": "19798147",
+      "name": "基地管理",
+      "font_class": "jidiguanli",
+      "unicode": "e618",
+      "unicode_decimal": 58904
+    },
+    {
+      "icon_id": "19798145",
+      "name": "基地面积",
+      "font_class": "jidimianji",
+      "unicode": "e617",
+      "unicode_decimal": 58903
+    },
+    {
+      "icon_id": "19798140",
+      "name": "建立时间",
+      "font_class": "jianlishijian",
+      "unicode": "e60d",
+      "unicode_decimal": 58893
+    },
+    {
+      "icon_id": "17654821",
+      "name": "录像",
+      "font_class": "luxiang",
+      "unicode": "e637",
+      "unicode_decimal": 58935
+    },
+    {
+      "icon_id": "774444",
+      "name": "扳手",
+      "font_class": "banshou",
+      "unicode": "e65c",
+      "unicode_decimal": 58972
+    },
+    {
+      "icon_id": "7335485",
+      "name": "地块",
+      "font_class": "chandi",
+      "unicode": "eb24",
+      "unicode_decimal": 60196
+    },
+    {
+      "icon_id": "7335489",
+      "name": "基础",
+      "font_class": "jichu",
+      "unicode": "eb25",
+      "unicode_decimal": 60197
+    },
+    {
+      "icon_id": "7335622",
+      "name": "迟到",
+      "font_class": "chidao",
+      "unicode": "eb44",
+      "unicode_decimal": 60228
+    },
+    {
+      "icon_id": "1391282",
+      "name": "日历",
+      "font_class": "rili",
+      "unicode": "e609",
+      "unicode_decimal": 58889
+    },
+    {
+      "icon_id": "5204808",
+      "name": "分类",
+      "font_class": "fenlei",
+      "unicode": "e616",
+      "unicode_decimal": 58902
+    },
+    {
+      "icon_id": "2678622",
+      "name": "全屏",
+      "font_class": "quanping",
+      "unicode": "e656",
+      "unicode_decimal": 58966
+    },
+    {
+      "icon_id": "772252",
+      "name": "扫描 识别 380%",
+      "font_class": "saomiaoshibie380",
+      "unicode": "e686",
+      "unicode_decimal": 59014
+    },
+    {
+      "icon_id": "11893490",
+      "name": "添加",
+      "font_class": "tianjia",
+      "unicode": "e615",
+      "unicode_decimal": 58901
+    },
+    {
+      "icon_id": "16364328",
+      "name": "统计",
+      "font_class": "tongji",
+      "unicode": "e636",
+      "unicode_decimal": 58934
+    },
+    {
+      "icon_id": "17709313",
+      "name": "未命名 -34",
+      "font_class": "weimingming-34",
+      "unicode": "e60b",
+      "unicode_decimal": 58891
+    },
+    {
+      "icon_id": "5327411",
+      "name": "臭虫bug",
+      "font_class": "chouchongbug",
+      "unicode": "e6e1",
+      "unicode_decimal": 59105
+    },
+    {
+      "icon_id": "802969",
+      "name": "楼房",
+      "font_class": "loufang",
+      "unicode": "e64f",
+      "unicode_decimal": 58959
+    },
+    {
+      "icon_id": "4348068",
+      "name": "电脑",
+      "font_class": "diannao1",
+      "unicode": "e623",
+      "unicode_decimal": 58915
+    },
+    {
+      "icon_id": "8835594",
+      "name": "图片",
+      "font_class": "tupian-xianxing",
+      "unicode": "e635",
+      "unicode_decimal": 58933
+    },
+    {
+      "icon_id": "10392628",
+      "name": "详情-",
+      "font_class": "xiangqing-",
+      "unicode": "e608",
+      "unicode_decimal": 58888
+    },
+    {
+      "icon_id": "36107",
+      "name": "面积",
+      "font_class": "mianji",
+      "unicode": "e602",
+      "unicode_decimal": 58882
+    },
+    {
+      "icon_id": "883904",
+      "name": "电话 (2)",
+      "font_class": "dianhua2",
+      "unicode": "e611",
+      "unicode_decimal": 58897
+    },
+    {
+      "icon_id": "1183130",
+      "name": "定位",
+      "font_class": "dingwei",
+      "unicode": "e675",
+      "unicode_decimal": 58997
+    },
+    {
+      "icon_id": "6129144",
+      "name": "102绑定",
+      "font_class": "bangding",
+      "unicode": "e784",
+      "unicode_decimal": 59268
+    },
+    {
+      "icon_id": "6970030",
+      "name": "用户",
+      "font_class": "yonghu11",
+      "unicode": "e705",
+      "unicode_decimal": 59141
+    },
+    {
+      "icon_id": "1106935",
+      "name": "雨",
+      "font_class": "yu",
+      "unicode": "e63a",
+      "unicode_decimal": 58938
+    },
+    {
+      "icon_id": "2155826",
+      "name": "温度",
+      "font_class": "thermometer_icon",
+      "unicode": "e67a",
+      "unicode_decimal": 59002
+    },
+    {
+      "icon_id": "4236632",
+      "name": "湿度",
+      "font_class": "shidu",
+      "unicode": "e60a",
+      "unicode_decimal": 58890
+    },
+    {
+      "icon_id": "7983631",
+      "name": "摄像头",
+      "font_class": "xingzhuang",
+      "unicode": "e614",
+      "unicode_decimal": 58900
+    },
+    {
+      "icon_id": "13638685",
+      "name": "电",
+      "font_class": "dian",
+      "unicode": "e655",
+      "unicode_decimal": 58965
+    },
+    {
+      "icon_id": "13638743",
+      "name": "温度",
+      "font_class": "wendu",
+      "unicode": "e660",
+      "unicode_decimal": 58976
+    },
+    {
+      "icon_id": "14095260",
+      "name": "定时",
+      "font_class": "dingshi",
+      "unicode": "e77e",
+      "unicode_decimal": 59262
+    },
+    {
+      "icon_id": "397065",
+      "name": "诱虫灯",
+      "font_class": "fangzhi",
+      "unicode": "e75c",
+      "unicode_decimal": 59228
+    },
+    {
+      "icon_id": "519489",
+      "name": "首页",
+      "font_class": "shouye",
+      "unicode": "e61e",
+      "unicode_decimal": 58910
+    },
+    {
+      "icon_id": "552767",
+      "name": "农药化肥",
+      "font_class": "nongchangguanli",
+      "unicode": "e62c",
+      "unicode_decimal": 58924
+    },
+    {
+      "icon_id": "689284",
+      "name": "设置 设定 配置 扳手",
+      "font_class": "shouhou",
+      "unicode": "e80e",
+      "unicode_decimal": 59406
+    },
+    {
+      "icon_id": "1119123",
+      "name": "系统",
+      "font_class": "xitong",
+      "unicode": "e60f",
+      "unicode_decimal": 58895
+    },
+    {
+      "icon_id": "1320048",
+      "name": "数据统计",
+      "font_class": "shujuzhanshi",
+      "unicode": "e621",
+      "unicode_decimal": 58913
+    },
+    {
+      "icon_id": "3483768",
+      "name": "地址",
+      "font_class": "jidi",
+      "unicode": "e672",
+      "unicode_decimal": 58994
+    },
+    {
+      "icon_id": "6756289",
+      "name": "专家",
+      "font_class": "zhuanjia",
+      "unicode": "e607",
+      "unicode_decimal": 58887
+    },
+    {
+      "icon_id": "7562834",
+      "name": "农事行为",
+      "font_class": "nongshiguanli",
+      "unicode": "e60c",
+      "unicode_decimal": 58892
+    },
+    {
+      "icon_id": "10544904",
+      "name": "多云转晴",
+      "font_class": "huanjingjiance",
+      "unicode": "e610",
+      "unicode_decimal": 58896
+    },
+    {
+      "icon_id": "13190141",
+      "name": "设备",
+      "font_class": "shebei",
+      "unicode": "e622",
+      "unicode_decimal": 58914
+    },
+    {
+      "icon_id": "13837385",
+      "name": "虫情监测 - 简",
+      "font_class": "cebaoguanli",
+      "unicode": "e776",
+      "unicode_decimal": 59254
+    },
+    {
+      "icon_id": "15282842",
+      "name": "树苗",
+      "font_class": "suyuan",
+      "unicode": "e6e8",
+      "unicode_decimal": 59112
+    },
+    {
+      "icon_id": "15631425",
+      "name": "监控",
+      "font_class": "jiankong",
+      "unicode": "e629",
+      "unicode_decimal": 58921
+    },
+    {
+      "icon_id": "992522",
+      "name": "信息",
+      "font_class": "xinxi1",
+      "unicode": "e64b",
+      "unicode_decimal": 58955
+    },
+    {
+      "icon_id": "1135940",
+      "name": "用户",
+      "font_class": "yonghu1",
+      "unicode": "e612",
+      "unicode_decimal": 58898
+    },
+    {
+      "icon_id": "7501066",
+      "name": "密码",
+      "font_class": "mima1",
+      "unicode": "e620",
+      "unicode_decimal": 58912
+    },
+    {
+      "icon_id": "715831",
+      "name": "电脑",
+      "font_class": "diannao",
+      "unicode": "e605",
+      "unicode_decimal": 58885
+    },
+    {
+      "icon_id": "4186778",
+      "name": "标签",
+      "font_class": "biaoqian",
+      "unicode": "e634",
+      "unicode_decimal": 58932
+    },
+    {
+      "icon_id": "6682541",
+      "name": "地址",
+      "font_class": "dizhi",
+      "unicode": "e606",
+      "unicode_decimal": 58886
+    },
+    {
+      "icon_id": "7404314",
+      "name": "时间",
+      "font_class": "shijian",
+      "unicode": "e77c",
+      "unicode_decimal": 59260
+    },
+    {
+      "icon_id": "8094230",
+      "name": "页面操作",
+      "font_class": "yemiancaozuo",
+      "unicode": "e64e",
+      "unicode_decimal": 58958
+    },
+    {
+      "icon_id": "10995780",
+      "name": "用户",
+      "font_class": "yonghu",
+      "unicode": "e60e",
+      "unicode_decimal": 58894
+    },
+    {
+      "icon_id": "354570",
+      "name": "编辑",
+      "font_class": "iconfontedit",
+      "unicode": "e61f",
+      "unicode_decimal": 58911
+    },
+    {
+      "icon_id": "813727",
+      "name": "充值",
+      "font_class": "chongzhi",
+      "unicode": "e633",
+      "unicode_decimal": 58931
+    },
+    {
+      "icon_id": "1761485",
+      "name": "禁用",
+      "font_class": "jinyong",
+      "unicode": "e641",
+      "unicode_decimal": 58945
+    },
+    {
+      "icon_id": "11391516",
+      "name": "密码",
+      "font_class": "mima",
+      "unicode": "e638",
+      "unicode_decimal": 58936
+    },
+    {
+      "icon_id": "9783463",
+      "name": "文档",
+      "font_class": "wendang",
+      "unicode": "e613",
+      "unicode_decimal": 58899
+    },
+    {
+      "icon_id": "4641118",
+      "name": "删除",
+      "font_class": "shanchu",
+      "unicode": "e625",
+      "unicode_decimal": 58917
+    },
+    {
+      "icon_id": "12685010",
+      "name": "铃",
+      "font_class": "icon_huabanfuben",
+      "unicode": "e62b",
+      "unicode_decimal": 58923
+    },
+    {
+      "icon_id": "2512619",
+      "name": "BAI-屋子",
+      "font_class": "BAI-wuzi",
+      "unicode": "e69c",
+      "unicode_decimal": 59036
+    },
+    {
+      "icon_id": "5387843",
+      "name": "主题_调色盘_o",
+      "font_class": "zhuti_tiaosepan_o",
+      "unicode": "eb6e",
+      "unicode_decimal": 60270
+    }
+  ]
+}

Разница между файлами не показана из-за своего большого размера
+ 245 - 0
unpackage/cache/wgt/__UNI__DBA6730/static/font/iconfont.svg


BIN
unpackage/cache/wgt/__UNI__DBA6730/static/font/iconfont.ttf


BIN
unpackage/cache/wgt/__UNI__DBA6730/static/font/iconfont.woff


BIN
unpackage/cache/wgt/__UNI__DBA6730/static/font/iconfont.woff2


+ 2 - 1
unpackage/cache/wgt/__UNI__DBA6730/static/h52.html

@@ -190,7 +190,8 @@
 		}).then((res) => {
 			console.log(res.data)
 			var data = eval("(" + res.data + ")");
-			var hlsHdSrc = data.hlsHd;
+			var hlsHdSrc = data.hls;
+			console.log(hlsHdSrc)
 			var rtmpHdSrc = data.rtmpHd;
 			var playHtml =
 				`<video id="myPlayer" autoplay   poster='' controls playsInline  webkit-playsinline src=${hlsHdSrc}  style="width:100%; height:100%;"></video>`;

BIN
unpackage/cache/wgt/__UNI__DBA6730/static/images/12.png


BIN
unpackage/cache/wgt/__UNI__DBA6730/static/images/13.png


BIN
unpackage/cache/wgt/__UNI__DBA6730/static/images/14.png


BIN
unpackage/cache/wgt/__UNI__DBA6730/static/images/15.png


BIN
unpackage/cache/wgt/__UNI__DBA6730/static/images/16.png


BIN
unpackage/cache/wgt/__UNI__DBA6730/static/images/17.png


BIN
unpackage/cache/wgt/__UNI__DBA6730/static/images/18.png


BIN
unpackage/cache/wgt/__UNI__DBA6730/static/images/19.png


BIN
unpackage/cache/wgt/__UNI__DBA6730/static/images/cb/gaofengqi.png


BIN
unpackage/cache/wgt/__UNI__DBA6730/static/images/cb/shijianqi.png


BIN
unpackage/cache/wgt/__UNI__DBA6730/static/images/cb/zhongjianqi.png


Разница между файлами не показана из-за своего большого размера
+ 1 - 1
unpackage/cache/wgt/__UNI__DBA6730/view.css


Разница между файлами не показана из-за своего большого размера
+ 3 - 3
unpackage/cache/wgt/__UNI__DBA6730/view.umd.min.js


Разница между файлами не показана из-за своего большого размера
+ 2 - 2
unpackage/dist/build/app-plus/app-config-service.js


Разница между файлами не показана из-за своего большого размера
+ 8 - 1
unpackage/dist/build/app-plus/app-service.js


Разница между файлами не показана из-за своего большого размера
+ 1 - 1
unpackage/dist/build/app-plus/app-view.js


Разница между файлами не показана из-за своего большого размера
+ 1 - 1
unpackage/dist/build/app-plus/manifest.json


+ 539 - 0
unpackage/dist/build/app-plus/static/font/demo.css

@@ -0,0 +1,539 @@
+/* Logo 字体 */
+@font-face {
+  font-family: "iconfont logo";
+  src: url('https://at.alicdn.com/t/font_985780_km7mi63cihi.eot?t=1545807318834');
+  src: url('https://at.alicdn.com/t/font_985780_km7mi63cihi.eot?t=1545807318834#iefix') format('embedded-opentype'),
+    url('https://at.alicdn.com/t/font_985780_km7mi63cihi.woff?t=1545807318834') format('woff'),
+    url('https://at.alicdn.com/t/font_985780_km7mi63cihi.ttf?t=1545807318834') format('truetype'),
+    url('https://at.alicdn.com/t/font_985780_km7mi63cihi.svg?t=1545807318834#iconfont') format('svg');
+}
+
+.logo {
+  font-family: "iconfont logo";
+  font-size: 160px;
+  font-style: normal;
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+}
+
+/* tabs */
+.nav-tabs {
+  position: relative;
+}
+
+.nav-tabs .nav-more {
+  position: absolute;
+  right: 0;
+  bottom: 0;
+  height: 42px;
+  line-height: 42px;
+  color: #666;
+}
+
+#tabs {
+  border-bottom: 1px solid #eee;
+}
+
+#tabs li {
+  cursor: pointer;
+  width: 100px;
+  height: 40px;
+  line-height: 40px;
+  text-align: center;
+  font-size: 16px;
+  border-bottom: 2px solid transparent;
+  position: relative;
+  z-index: 1;
+  margin-bottom: -1px;
+  color: #666;
+}
+
+
+#tabs .active {
+  border-bottom-color: #f00;
+  color: #222;
+}
+
+.tab-container .content {
+  display: none;
+}
+
+/* 页面布局 */
+.main {
+  padding: 30px 100px;
+  width: 960px;
+  margin: 0 auto;
+}
+
+.main .logo {
+  color: #333;
+  text-align: left;
+  margin-bottom: 30px;
+  line-height: 1;
+  height: 110px;
+  margin-top: -50px;
+  overflow: hidden;
+  *zoom: 1;
+}
+
+.main .logo a {
+  font-size: 160px;
+  color: #333;
+}
+
+.helps {
+  margin-top: 40px;
+}
+
+.helps pre {
+  padding: 20px;
+  margin: 10px 0;
+  border: solid 1px #e7e1cd;
+  background-color: #fffdef;
+  overflow: auto;
+}
+
+.icon_lists {
+  width: 100% !important;
+  overflow: hidden;
+  *zoom: 1;
+}
+
+.icon_lists li {
+  width: 100px;
+  margin-bottom: 10px;
+  margin-right: 20px;
+  text-align: center;
+  list-style: none !important;
+  cursor: default;
+}
+
+.icon_lists li .code-name {
+  line-height: 1.2;
+}
+
+.icon_lists .icon {
+  display: block;
+  height: 100px;
+  line-height: 100px;
+  font-size: 42px;
+  margin: 10px auto;
+  color: #333;
+  -webkit-transition: font-size 0.25s linear, width 0.25s linear;
+  -moz-transition: font-size 0.25s linear, width 0.25s linear;
+  transition: font-size 0.25s linear, width 0.25s linear;
+}
+
+.icon_lists .icon:hover {
+  font-size: 100px;
+}
+
+.icon_lists .svg-icon {
+  /* 通过设置 font-size 来改变图标大小 */
+  width: 1em;
+  /* 图标和文字相邻时,垂直对齐 */
+  vertical-align: -0.15em;
+  /* 通过设置 color 来改变 SVG 的颜色/fill */
+  fill: currentColor;
+  /* path 和 stroke 溢出 viewBox 部分在 IE 下会显示
+      normalize.css 中也包含这行 */
+  overflow: hidden;
+}
+
+.icon_lists li .name,
+.icon_lists li .code-name {
+  color: #666;
+}
+
+/* markdown 样式 */
+.markdown {
+  color: #666;
+  font-size: 14px;
+  line-height: 1.8;
+}
+
+.highlight {
+  line-height: 1.5;
+}
+
+.markdown img {
+  vertical-align: middle;
+  max-width: 100%;
+}
+
+.markdown h1 {
+  color: #404040;
+  font-weight: 500;
+  line-height: 40px;
+  margin-bottom: 24px;
+}
+
+.markdown h2,
+.markdown h3,
+.markdown h4,
+.markdown h5,
+.markdown h6 {
+  color: #404040;
+  margin: 1.6em 0 0.6em 0;
+  font-weight: 500;
+  clear: both;
+}
+
+.markdown h1 {
+  font-size: 28px;
+}
+
+.markdown h2 {
+  font-size: 22px;
+}
+
+.markdown h3 {
+  font-size: 16px;
+}
+
+.markdown h4 {
+  font-size: 14px;
+}
+
+.markdown h5 {
+  font-size: 12px;
+}
+
+.markdown h6 {
+  font-size: 12px;
+}
+
+.markdown hr {
+  height: 1px;
+  border: 0;
+  background: #e9e9e9;
+  margin: 16px 0;
+  clear: both;
+}
+
+.markdown p {
+  margin: 1em 0;
+}
+
+.markdown>p,
+.markdown>blockquote,
+.markdown>.highlight,
+.markdown>ol,
+.markdown>ul {
+  width: 80%;
+}
+
+.markdown ul>li {
+  list-style: circle;
+}
+
+.markdown>ul li,
+.markdown blockquote ul>li {
+  margin-left: 20px;
+  padding-left: 4px;
+}
+
+.markdown>ul li p,
+.markdown>ol li p {
+  margin: 0.6em 0;
+}
+
+.markdown ol>li {
+  list-style: decimal;
+}
+
+.markdown>ol li,
+.markdown blockquote ol>li {
+  margin-left: 20px;
+  padding-left: 4px;
+}
+
+.markdown code {
+  margin: 0 3px;
+  padding: 0 5px;
+  background: #eee;
+  border-radius: 3px;
+}
+
+.markdown strong,
+.markdown b {
+  font-weight: 600;
+}
+
+.markdown>table {
+  border-collapse: collapse;
+  border-spacing: 0px;
+  empty-cells: show;
+  border: 1px solid #e9e9e9;
+  width: 95%;
+  margin-bottom: 24px;
+}
+
+.markdown>table th {
+  white-space: nowrap;
+  color: #333;
+  font-weight: 600;
+}
+
+.markdown>table th,
+.markdown>table td {
+  border: 1px solid #e9e9e9;
+  padding: 8px 16px;
+  text-align: left;
+}
+
+.markdown>table th {
+  background: #F7F7F7;
+}
+
+.markdown blockquote {
+  font-size: 90%;
+  color: #999;
+  border-left: 4px solid #e9e9e9;
+  padding-left: 0.8em;
+  margin: 1em 0;
+}
+
+.markdown blockquote p {
+  margin: 0;
+}
+
+.markdown .anchor {
+  opacity: 0;
+  transition: opacity 0.3s ease;
+  margin-left: 8px;
+}
+
+.markdown .waiting {
+  color: #ccc;
+}
+
+.markdown h1:hover .anchor,
+.markdown h2:hover .anchor,
+.markdown h3:hover .anchor,
+.markdown h4:hover .anchor,
+.markdown h5:hover .anchor,
+.markdown h6:hover .anchor {
+  opacity: 1;
+  display: inline-block;
+}
+
+.markdown>br,
+.markdown>p>br {
+  clear: both;
+}
+
+
+.hljs {
+  display: block;
+  background: white;
+  padding: 0.5em;
+  color: #333333;
+  overflow-x: auto;
+}
+
+.hljs-comment,
+.hljs-meta {
+  color: #969896;
+}
+
+.hljs-string,
+.hljs-variable,
+.hljs-template-variable,
+.hljs-strong,
+.hljs-emphasis,
+.hljs-quote {
+  color: #df5000;
+}
+
+.hljs-keyword,
+.hljs-selector-tag,
+.hljs-type {
+  color: #a71d5d;
+}
+
+.hljs-literal,
+.hljs-symbol,
+.hljs-bullet,
+.hljs-attribute {
+  color: #0086b3;
+}
+
+.hljs-section,
+.hljs-name {
+  color: #63a35c;
+}
+
+.hljs-tag {
+  color: #333333;
+}
+
+.hljs-title,
+.hljs-attr,
+.hljs-selector-id,
+.hljs-selector-class,
+.hljs-selector-attr,
+.hljs-selector-pseudo {
+  color: #795da3;
+}
+
+.hljs-addition {
+  color: #55a532;
+  background-color: #eaffea;
+}
+
+.hljs-deletion {
+  color: #bd2c00;
+  background-color: #ffecec;
+}
+
+.hljs-link {
+  text-decoration: underline;
+}
+
+/* 代码高亮 */
+/* PrismJS 1.15.0
+https://prismjs.com/download.html#themes=prism&languages=markup+css+clike+javascript */
+/**
+ * prism.js default theme for JavaScript, CSS and HTML
+ * Based on dabblet (http://dabblet.com)
+ * @author Lea Verou
+ */
+code[class*="language-"],
+pre[class*="language-"] {
+  color: black;
+  background: none;
+  text-shadow: 0 1px white;
+  font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace;
+  text-align: left;
+  white-space: pre;
+  word-spacing: normal;
+  word-break: normal;
+  word-wrap: normal;
+  line-height: 1.5;
+
+  -moz-tab-size: 4;
+  -o-tab-size: 4;
+  tab-size: 4;
+
+  -webkit-hyphens: none;
+  -moz-hyphens: none;
+  -ms-hyphens: none;
+  hyphens: none;
+}
+
+pre[class*="language-"]::-moz-selection,
+pre[class*="language-"] ::-moz-selection,
+code[class*="language-"]::-moz-selection,
+code[class*="language-"] ::-moz-selection {
+  text-shadow: none;
+  background: #b3d4fc;
+}
+
+pre[class*="language-"]::selection,
+pre[class*="language-"] ::selection,
+code[class*="language-"]::selection,
+code[class*="language-"] ::selection {
+  text-shadow: none;
+  background: #b3d4fc;
+}
+
+@media print {
+
+  code[class*="language-"],
+  pre[class*="language-"] {
+    text-shadow: none;
+  }
+}
+
+/* Code blocks */
+pre[class*="language-"] {
+  padding: 1em;
+  margin: .5em 0;
+  overflow: auto;
+}
+
+:not(pre)>code[class*="language-"],
+pre[class*="language-"] {
+  background: #f5f2f0;
+}
+
+/* Inline code */
+:not(pre)>code[class*="language-"] {
+  padding: .1em;
+  border-radius: .3em;
+  white-space: normal;
+}
+
+.token.comment,
+.token.prolog,
+.token.doctype,
+.token.cdata {
+  color: slategray;
+}
+
+.token.punctuation {
+  color: #999;
+}
+
+.namespace {
+  opacity: .7;
+}
+
+.token.property,
+.token.tag,
+.token.boolean,
+.token.number,
+.token.constant,
+.token.symbol,
+.token.deleted {
+  color: #905;
+}
+
+.token.selector,
+.token.attr-name,
+.token.string,
+.token.char,
+.token.builtin,
+.token.inserted {
+  color: #690;
+}
+
+.token.operator,
+.token.entity,
+.token.url,
+.language-css .token.string,
+.style .token.string {
+  color: #9a6e3a;
+  background: hsla(0, 0%, 100%, .5);
+}
+
+.token.atrule,
+.token.attr-value,
+.token.keyword {
+  color: #07a;
+}
+
+.token.function,
+.token.class-name {
+  color: #DD4A68;
+}
+
+.token.regex,
+.token.important,
+.token.variable {
+  color: #e90;
+}
+
+.token.important,
+.token.bold {
+  font-weight: bold;
+}
+
+.token.italic {
+  font-style: italic;
+}
+
+.token.entity {
+  cursor: help;
+}

Разница между файлами не показана из-за своего большого размера
+ 1850 - 0
unpackage/dist/build/app-plus/static/font/demo_index.html


BIN
unpackage/dist/build/app-plus/static/font/iconfont.eot


Разница между файлами не показана из-за своего большого размера
+ 1 - 0
unpackage/dist/build/app-plus/static/font/iconfont.js


+ 520 - 0
unpackage/dist/build/app-plus/static/font/iconfont.json

@@ -0,0 +1,520 @@
+{
+  "id": "1738837",
+  "name": "农业大数据",
+  "font_family": "iconfont",
+  "css_prefix_text": "icon-",
+  "description": "",
+  "glyphs": [
+    {
+      "icon_id": "5064096",
+      "name": "统计",
+      "font_class": "tongji2",
+      "unicode": "e646",
+      "unicode_decimal": 58950
+    },
+    {
+      "icon_id": "9241144",
+      "name": "手写签批",
+      "font_class": "iconzhengli_shouxieqianpi",
+      "unicode": "e648",
+      "unicode_decimal": 58952
+    },
+    {
+      "icon_id": "13173807",
+      "name": "识别",
+      "font_class": "shibie",
+      "unicode": "e603",
+      "unicode_decimal": 58883
+    },
+    {
+      "icon_id": "15726936",
+      "name": "统计",
+      "font_class": "tongji1",
+      "unicode": "e642",
+      "unicode_decimal": 58946
+    },
+    {
+      "icon_id": "20082758",
+      "name": "可视化大屏",
+      "font_class": "keshihuadaping",
+      "unicode": "e61c",
+      "unicode_decimal": 58908
+    },
+    {
+      "icon_id": "20082759",
+      "name": "退出关闭",
+      "font_class": "tuichuguanbi",
+      "unicode": "e61d",
+      "unicode_decimal": 58909
+    },
+    {
+      "icon_id": "20082258",
+      "name": "照片查看",
+      "font_class": "zhaopianchakan",
+      "unicode": "e61b",
+      "unicode_decimal": 58907
+    },
+    {
+      "icon_id": "20081037",
+      "name": "图标任务",
+      "font_class": "tubiaorenwu",
+      "unicode": "e61a",
+      "unicode_decimal": 58906
+    },
+    {
+      "icon_id": "19799572",
+      "name": "定位",
+      "font_class": "dingwei1",
+      "unicode": "e619",
+      "unicode_decimal": 58905
+    },
+    {
+      "icon_id": "19798147",
+      "name": "基地管理",
+      "font_class": "jidiguanli",
+      "unicode": "e618",
+      "unicode_decimal": 58904
+    },
+    {
+      "icon_id": "19798145",
+      "name": "基地面积",
+      "font_class": "jidimianji",
+      "unicode": "e617",
+      "unicode_decimal": 58903
+    },
+    {
+      "icon_id": "19798140",
+      "name": "建立时间",
+      "font_class": "jianlishijian",
+      "unicode": "e60d",
+      "unicode_decimal": 58893
+    },
+    {
+      "icon_id": "17654821",
+      "name": "录像",
+      "font_class": "luxiang",
+      "unicode": "e637",
+      "unicode_decimal": 58935
+    },
+    {
+      "icon_id": "774444",
+      "name": "扳手",
+      "font_class": "banshou",
+      "unicode": "e65c",
+      "unicode_decimal": 58972
+    },
+    {
+      "icon_id": "7335485",
+      "name": "地块",
+      "font_class": "chandi",
+      "unicode": "eb24",
+      "unicode_decimal": 60196
+    },
+    {
+      "icon_id": "7335489",
+      "name": "基础",
+      "font_class": "jichu",
+      "unicode": "eb25",
+      "unicode_decimal": 60197
+    },
+    {
+      "icon_id": "7335622",
+      "name": "迟到",
+      "font_class": "chidao",
+      "unicode": "eb44",
+      "unicode_decimal": 60228
+    },
+    {
+      "icon_id": "1391282",
+      "name": "日历",
+      "font_class": "rili",
+      "unicode": "e609",
+      "unicode_decimal": 58889
+    },
+    {
+      "icon_id": "5204808",
+      "name": "分类",
+      "font_class": "fenlei",
+      "unicode": "e616",
+      "unicode_decimal": 58902
+    },
+    {
+      "icon_id": "2678622",
+      "name": "全屏",
+      "font_class": "quanping",
+      "unicode": "e656",
+      "unicode_decimal": 58966
+    },
+    {
+      "icon_id": "772252",
+      "name": "扫描 识别 380%",
+      "font_class": "saomiaoshibie380",
+      "unicode": "e686",
+      "unicode_decimal": 59014
+    },
+    {
+      "icon_id": "11893490",
+      "name": "添加",
+      "font_class": "tianjia",
+      "unicode": "e615",
+      "unicode_decimal": 58901
+    },
+    {
+      "icon_id": "16364328",
+      "name": "统计",
+      "font_class": "tongji",
+      "unicode": "e636",
+      "unicode_decimal": 58934
+    },
+    {
+      "icon_id": "17709313",
+      "name": "未命名 -34",
+      "font_class": "weimingming-34",
+      "unicode": "e60b",
+      "unicode_decimal": 58891
+    },
+    {
+      "icon_id": "5327411",
+      "name": "臭虫bug",
+      "font_class": "chouchongbug",
+      "unicode": "e6e1",
+      "unicode_decimal": 59105
+    },
+    {
+      "icon_id": "802969",
+      "name": "楼房",
+      "font_class": "loufang",
+      "unicode": "e64f",
+      "unicode_decimal": 58959
+    },
+    {
+      "icon_id": "4348068",
+      "name": "电脑",
+      "font_class": "diannao1",
+      "unicode": "e623",
+      "unicode_decimal": 58915
+    },
+    {
+      "icon_id": "8835594",
+      "name": "图片",
+      "font_class": "tupian-xianxing",
+      "unicode": "e635",
+      "unicode_decimal": 58933
+    },
+    {
+      "icon_id": "10392628",
+      "name": "详情-",
+      "font_class": "xiangqing-",
+      "unicode": "e608",
+      "unicode_decimal": 58888
+    },
+    {
+      "icon_id": "36107",
+      "name": "面积",
+      "font_class": "mianji",
+      "unicode": "e602",
+      "unicode_decimal": 58882
+    },
+    {
+      "icon_id": "883904",
+      "name": "电话 (2)",
+      "font_class": "dianhua2",
+      "unicode": "e611",
+      "unicode_decimal": 58897
+    },
+    {
+      "icon_id": "1183130",
+      "name": "定位",
+      "font_class": "dingwei",
+      "unicode": "e675",
+      "unicode_decimal": 58997
+    },
+    {
+      "icon_id": "6129144",
+      "name": "102绑定",
+      "font_class": "bangding",
+      "unicode": "e784",
+      "unicode_decimal": 59268
+    },
+    {
+      "icon_id": "6970030",
+      "name": "用户",
+      "font_class": "yonghu11",
+      "unicode": "e705",
+      "unicode_decimal": 59141
+    },
+    {
+      "icon_id": "1106935",
+      "name": "雨",
+      "font_class": "yu",
+      "unicode": "e63a",
+      "unicode_decimal": 58938
+    },
+    {
+      "icon_id": "2155826",
+      "name": "温度",
+      "font_class": "thermometer_icon",
+      "unicode": "e67a",
+      "unicode_decimal": 59002
+    },
+    {
+      "icon_id": "4236632",
+      "name": "湿度",
+      "font_class": "shidu",
+      "unicode": "e60a",
+      "unicode_decimal": 58890
+    },
+    {
+      "icon_id": "7983631",
+      "name": "摄像头",
+      "font_class": "xingzhuang",
+      "unicode": "e614",
+      "unicode_decimal": 58900
+    },
+    {
+      "icon_id": "13638685",
+      "name": "电",
+      "font_class": "dian",
+      "unicode": "e655",
+      "unicode_decimal": 58965
+    },
+    {
+      "icon_id": "13638743",
+      "name": "温度",
+      "font_class": "wendu",
+      "unicode": "e660",
+      "unicode_decimal": 58976
+    },
+    {
+      "icon_id": "14095260",
+      "name": "定时",
+      "font_class": "dingshi",
+      "unicode": "e77e",
+      "unicode_decimal": 59262
+    },
+    {
+      "icon_id": "397065",
+      "name": "诱虫灯",
+      "font_class": "fangzhi",
+      "unicode": "e75c",
+      "unicode_decimal": 59228
+    },
+    {
+      "icon_id": "519489",
+      "name": "首页",
+      "font_class": "shouye",
+      "unicode": "e61e",
+      "unicode_decimal": 58910
+    },
+    {
+      "icon_id": "552767",
+      "name": "农药化肥",
+      "font_class": "nongchangguanli",
+      "unicode": "e62c",
+      "unicode_decimal": 58924
+    },
+    {
+      "icon_id": "689284",
+      "name": "设置 设定 配置 扳手",
+      "font_class": "shouhou",
+      "unicode": "e80e",
+      "unicode_decimal": 59406
+    },
+    {
+      "icon_id": "1119123",
+      "name": "系统",
+      "font_class": "xitong",
+      "unicode": "e60f",
+      "unicode_decimal": 58895
+    },
+    {
+      "icon_id": "1320048",
+      "name": "数据统计",
+      "font_class": "shujuzhanshi",
+      "unicode": "e621",
+      "unicode_decimal": 58913
+    },
+    {
+      "icon_id": "3483768",
+      "name": "地址",
+      "font_class": "jidi",
+      "unicode": "e672",
+      "unicode_decimal": 58994
+    },
+    {
+      "icon_id": "6756289",
+      "name": "专家",
+      "font_class": "zhuanjia",
+      "unicode": "e607",
+      "unicode_decimal": 58887
+    },
+    {
+      "icon_id": "7562834",
+      "name": "农事行为",
+      "font_class": "nongshiguanli",
+      "unicode": "e60c",
+      "unicode_decimal": 58892
+    },
+    {
+      "icon_id": "10544904",
+      "name": "多云转晴",
+      "font_class": "huanjingjiance",
+      "unicode": "e610",
+      "unicode_decimal": 58896
+    },
+    {
+      "icon_id": "13190141",
+      "name": "设备",
+      "font_class": "shebei",
+      "unicode": "e622",
+      "unicode_decimal": 58914
+    },
+    {
+      "icon_id": "13837385",
+      "name": "虫情监测 - 简",
+      "font_class": "cebaoguanli",
+      "unicode": "e776",
+      "unicode_decimal": 59254
+    },
+    {
+      "icon_id": "15282842",
+      "name": "树苗",
+      "font_class": "suyuan",
+      "unicode": "e6e8",
+      "unicode_decimal": 59112
+    },
+    {
+      "icon_id": "15631425",
+      "name": "监控",
+      "font_class": "jiankong",
+      "unicode": "e629",
+      "unicode_decimal": 58921
+    },
+    {
+      "icon_id": "992522",
+      "name": "信息",
+      "font_class": "xinxi1",
+      "unicode": "e64b",
+      "unicode_decimal": 58955
+    },
+    {
+      "icon_id": "1135940",
+      "name": "用户",
+      "font_class": "yonghu1",
+      "unicode": "e612",
+      "unicode_decimal": 58898
+    },
+    {
+      "icon_id": "7501066",
+      "name": "密码",
+      "font_class": "mima1",
+      "unicode": "e620",
+      "unicode_decimal": 58912
+    },
+    {
+      "icon_id": "715831",
+      "name": "电脑",
+      "font_class": "diannao",
+      "unicode": "e605",
+      "unicode_decimal": 58885
+    },
+    {
+      "icon_id": "4186778",
+      "name": "标签",
+      "font_class": "biaoqian",
+      "unicode": "e634",
+      "unicode_decimal": 58932
+    },
+    {
+      "icon_id": "6682541",
+      "name": "地址",
+      "font_class": "dizhi",
+      "unicode": "e606",
+      "unicode_decimal": 58886
+    },
+    {
+      "icon_id": "7404314",
+      "name": "时间",
+      "font_class": "shijian",
+      "unicode": "e77c",
+      "unicode_decimal": 59260
+    },
+    {
+      "icon_id": "8094230",
+      "name": "页面操作",
+      "font_class": "yemiancaozuo",
+      "unicode": "e64e",
+      "unicode_decimal": 58958
+    },
+    {
+      "icon_id": "10995780",
+      "name": "用户",
+      "font_class": "yonghu",
+      "unicode": "e60e",
+      "unicode_decimal": 58894
+    },
+    {
+      "icon_id": "354570",
+      "name": "编辑",
+      "font_class": "iconfontedit",
+      "unicode": "e61f",
+      "unicode_decimal": 58911
+    },
+    {
+      "icon_id": "813727",
+      "name": "充值",
+      "font_class": "chongzhi",
+      "unicode": "e633",
+      "unicode_decimal": 58931
+    },
+    {
+      "icon_id": "1761485",
+      "name": "禁用",
+      "font_class": "jinyong",
+      "unicode": "e641",
+      "unicode_decimal": 58945
+    },
+    {
+      "icon_id": "11391516",
+      "name": "密码",
+      "font_class": "mima",
+      "unicode": "e638",
+      "unicode_decimal": 58936
+    },
+    {
+      "icon_id": "9783463",
+      "name": "文档",
+      "font_class": "wendang",
+      "unicode": "e613",
+      "unicode_decimal": 58899
+    },
+    {
+      "icon_id": "4641118",
+      "name": "删除",
+      "font_class": "shanchu",
+      "unicode": "e625",
+      "unicode_decimal": 58917
+    },
+    {
+      "icon_id": "12685010",
+      "name": "铃",
+      "font_class": "icon_huabanfuben",
+      "unicode": "e62b",
+      "unicode_decimal": 58923
+    },
+    {
+      "icon_id": "2512619",
+      "name": "BAI-屋子",
+      "font_class": "BAI-wuzi",
+      "unicode": "e69c",
+      "unicode_decimal": 59036
+    },
+    {
+      "icon_id": "5387843",
+      "name": "主题_调色盘_o",
+      "font_class": "zhuti_tiaosepan_o",
+      "unicode": "eb6e",
+      "unicode_decimal": 60270
+    }
+  ]
+}

Разница между файлами не показана из-за своего большого размера
+ 245 - 0
unpackage/dist/build/app-plus/static/font/iconfont.svg


BIN
unpackage/dist/build/app-plus/static/font/iconfont.ttf


+ 0 - 0
unpackage/dist/build/app-plus/static/font/iconfont.woff


Некоторые файлы не были показаны из-за большого количества измененных файлов