yf_elsa.cui пре 4 недеља
родитељ
комит
ff6e6e22c0
66 измењених фајлова са 13018 додато и 4073 уклоњено
  1. 1 1
      .hbuilderx/launch.json
  2. 26 9
      main.js
  3. 5 1
      manifest.json
  4. 1 0
      pages.json
  5. 3 3
      pages/cb/cbd/equip-set/equip-set-sy2.vue
  6. 341 333
      pages/cb/cbd/equip-set/photoResults.vue
  7. 172 60
      pages/cb/equip-detail/equip-detail-new.vue
  8. 1 1
      pages/cb/thxydetail/thxydetail.vue
  9. 95 11
      pages/distribution/index.vue
  10. 65 19
      pages/fourBase/basefacility.vue
  11. 15 3
      pages/monitor/index.vue
  12. 7 5
      pages/webview.vue
  13. BIN
      static/360ARTagAsserts/Blue/Line_0.png
  14. BIN
      static/360ARTagAsserts/Blue/Line_1.png
  15. BIN
      static/360ARTagAsserts/Blue/TextLabel_0.png
  16. BIN
      static/360ARTagAsserts/Blue/TextLabel_1.png
  17. BIN
      static/360ARTagAsserts/Blue/gif/point_0.png
  18. BIN
      static/360ARTagAsserts/Blue/gif/point_1.png
  19. BIN
      static/360ARTagAsserts/Drops-1.png
  20. BIN
      static/360ARTagAsserts/Drops-2.png
  21. BIN
      static/360ARTagAsserts/Green/Line_0.png
  22. BIN
      static/360ARTagAsserts/Green/Line_1.png
  23. BIN
      static/360ARTagAsserts/Green/TextLabel_0.png
  24. BIN
      static/360ARTagAsserts/Green/TextLabel_1.png
  25. BIN
      static/360ARTagAsserts/Green/gif/point_0.png
  26. BIN
      static/360ARTagAsserts/Green/gif/point_1.png
  27. BIN
      static/360ARTagAsserts/glasses.png
  28. BIN
      static/360ARTagAsserts/loading.gif
  29. 0 21
      static/WasmLib/Common/libH264Enc.js
  30. BIN
      static/WasmLib/Common/libH264Enc.wasm
  31. 0 21
      static/WasmLib/Common/libIVSDrawer.js
  32. BIN
      static/WasmLib/Common/libIVSDrawer.wasm
  33. 0 21
      static/WasmLib/Common/libRenderEngine.js
  34. BIN
      static/WasmLib/Common/libRenderEngine.wasm
  35. 0 50
      static/WasmLib/Common/libmavasp_litepacket.data
  36. 0 21
      static/WasmLib/Common/libmavasp_litepacket.js
  37. BIN
      static/WasmLib/Common/libmavasp_litepacket.wasm
  38. 0 21
      static/WasmLib/MultiThread/libStreamClient.js
  39. BIN
      static/WasmLib/MultiThread/libStreamClient.wasm
  40. 0 1
      static/WasmLib/MultiThread/libStreamClient.worker.js
  41. BIN
      static/WasmLib/MultiThread/libplay.data
  42. 0 1
      static/WasmLib/MultiThread/libplay.js
  43. BIN
      static/WasmLib/MultiThread/libplay.wasm
  44. 0 1
      static/WasmLib/MultiThread/libplay.worker.js
  45. 0 1094
      static/WasmLib/SingleThread/VideoDecodeWorker.js
  46. 0 21
      static/WasmLib/SingleThread/libIVSDrawer.js
  47. BIN
      static/WasmLib/SingleThread/libIVSDrawer.wasm
  48. 0 21
      static/WasmLib/SingleThread/libRenderEngine.js
  49. BIN
      static/WasmLib/SingleThread/libRenderEngine.wasm
  50. 0 21
      static/WasmLib/SingleThread/libStreamClient.js
  51. BIN
      static/WasmLib/SingleThread/libStreamClient.wasm
  52. 0 1
      static/WasmLib/SingleThread/libplay.js
  53. BIN
      static/WasmLib/SingleThread/libplay.wasm
  54. 0 29
      static/WasmLib/SingleThread/libplayAPI.js
  55. 274 111
      static/h52.html
  56. 11 0
      static/jquery-3.5.1.min.js
  57. 11964 0
      static/js/flv.min.js
  58. 1 0
      static/jweixin-1.4.0.js
  59. 1 0
      static/jweixin-1.6.0.js
  60. 1 0
      static/uni.webview.1.5.2.js
  61. 8 0
      static/uni.webview.1.5.6.js
  62. 25 0
      static/video.min.js
  63. 0 1
      static/videoPlayer/playerWasm/PlaySDKInterface.js
  64. 0 1023
      static/videoPlayer/playerWasm/public.js
  65. 0 1147
      static/videoPlayer/videoPlay-js.js
  66. 1 0
      util/api.js

+ 1 - 1
.hbuilderx/launch.json

@@ -20,7 +20,7 @@
         },
         {
             "customPlaygroundType" : "local",
-            "playground" : "custom",
+            "playground" : "standard",
             "type" : "uni-app:app-android"
         }
     ]

+ 26 - 9
main.js

@@ -19,18 +19,35 @@ Vue.prototype.$QueryPermission = QueryPermission;
 // 自定义卡片
 import customCard from './components/customCard/customCard.vue';
 Vue.component('customCard', customCard);
-Vue.filter('timeFormat', function (time) {
+Vue.filter('timeFormat', function (time,fmt = 'yyyy-MM-dd hh:mm:ss') {
   function fun(a) {
     return String(a).length == 1 ? '0' + a : a;
   }
-  let date = new Date(time * 1000);
-  let y = date.getFullYear();
-  let m = date.getMonth() + 1;
-  let d = date.getDate();
-  let h = date.getHours();
-  let min = date.getMinutes();
-  let sec = date.getSeconds();
-  return `${y}-${fun(m)}-${fun(d)} ${fun(h)}:${fun(min)}:${fun(sec)}`;
+  let $this = new Date(time*1000);
+  let o = {
+    'M+': $this.getMonth() + 1,
+    'd+': $this.getDate(),
+    'h+': $this.getHours(),
+    'm+': $this.getMinutes(),
+    's+': $this.getSeconds(),
+    'q+': Math.floor(($this.getMonth() + 3) / 3),
+    S: $this.getMilliseconds(),
+  };
+  if (/(y+)/.test(fmt)) {
+    fmt = fmt.replace(
+      RegExp.$1,
+      ($this.getFullYear() + '').substr(4 - RegExp.$1.length)
+    );
+  }
+  for (var k in o) {
+    if (new RegExp('(' + k + ')').test(fmt)) {
+      fmt = fmt.replace(
+        RegExp.$1,
+        RegExp.$1.length === 1 ? o[k] : ('00' + o[k]).substr(('' + o[k]).length)
+      );
+    }
+  }
+  return fmt;
 });
 
 Vue.prototype.formatTime = function (thistime, fmt = 'yyyy-MM-dd hh:mm:ss') {

+ 5 - 1
manifest.json

@@ -31,7 +31,11 @@
             "VideoPlayer" : {},
             "LivePusher" : {},
             "Geolocation" : {},
-            "Camera" : {}
+            "Camera" : {},
+            "wasm" : {
+                "enabled" : true,
+                "preload" : false
+            }
         },
         /* 应用发布信息 */
         "distribute" : {

+ 1 - 0
pages.json

@@ -446,6 +446,7 @@
         "navigationBarTitleText": "监控列表"
       }
     },
+
     {
       "path": "pages/fourBase/basefacility",
       "style": {

+ 3 - 3
pages/cb/cbd/equip-set/equip-set-sy2.vue

@@ -50,7 +50,7 @@
 				<u-icon class="arrow" name="arrow-right"></u-icon>
 			</view>
 		</view>
-		<view class="uni-list-cell" @click="shikongshow = true" v-if="equipContrlForm.ctrlMode=='0'">
+		<view class="uni-list-cell" @click="shikongshow = true" v-if="equipContrlForm.ctrlMode=='1'">
 			<span class="tit">
 				时控时长
 			</span>
@@ -60,7 +60,7 @@
 			</view>
 			
 		</view>
-		<view class="uni-list-cell" @click="gkongShow = true" v-if="equipContrlForm.ctrlMode=='1'">
+		<view class="uni-list-cell" @click="gkongShow = true" v-if="equipContrlForm.ctrlMode=='0'">
 			<span class="tit">
 				光控时长
 			</span>
@@ -430,7 +430,7 @@
 					return 
 				}
 				this.equipContrlForm = res
-				this.tsArrLabel = res.ctrlMode=='1' ? '光控模式':'时控模式'
+				this.tsArrLabel = res.ctrlMode=='0' ? '光控模式':'时控模式'
 				this.gkongLabel = res.lightDuration + 'h'
 				this.shikongLabel = res.startHour + ':00' +  ' - '+res.endHour + ':00' 
 				console.log(this.equipContrlForm)

+ 341 - 333
pages/cb/cbd/equip-set/photoResults.vue

@@ -1,349 +1,357 @@
 <template>
-  <view
-    style="
+	<view style="
       background-color: #f7f7f7;
       padding-top: 88rpx;
       height: calc(100vh - 88rpx);
-    "
-  >
-    <uni-nav-bar
-      @clickLeft="clickLeft"
-      left-icon="back"
-      title="识别结果"
-      backgroundColor="#F7F7F7"
-    ></uni-nav-bar>
-    <u-calendar
-      v-model="calendarShow"
-      mode="range"
-      @change="change"
-      @maxDate="maxDate"
-    ></u-calendar>
-    <view class="img-result">
-      <view class="tile-item">
-        <view @click="calendarShow = true" class="calendar"
-          >{{ start_time }} <span style="margin: 0 40rpx"> -</span>
-          {{ end_time }}</view
-        >
-      </view>
+    ">
+		<uni-nav-bar @clickLeft="clickLeft" left-icon="back" title="识别结果" backgroundColor="#F7F7F7"></uni-nav-bar>
+		<u-calendar v-model="calendarShow" mode="range" @change="change" @maxDate="maxDate"></u-calendar>
+		<view class="img-result">
+			<view class="tile-item">
+				<view @click="calendarShow = true" class="calendar">{{ start_time }} <span style="margin: 0 40rpx">
+						-</span>
+					{{ end_time }}
+				</view>
+			</view>
 
-      <view class="images_box">
-        <view class="canvas-bg">
-          <canvas-mark />
-          <!-- <img v-if="photos.length>0" :src="photos[active].addr+'?x-oss-process=image/resize,w_130/quality,q_90'" alt=""  @click="examine()"/> -->
-        </view>
-        <view class="image-flex">
-          <view v-for="(item, index) in photos" :key="index">
-            <image
-              class="my-img"
-              :class="active == index ? 'active' : ''"
-              :src="item.addr"
-              @click="imgClick(item, index)"
-              mode=""
-            ></image>
-          </view>
-        </view>
-      </view>
-      <view class="information">
-        <view class="btn">
-          <p class="title">当前图片识别结果</p>
-          <u-button
-            size="mini"
-            :loading="respetLoading"
-            class="btn_box"
-            throttle-time="500"
-            @click="resetPest"
-            :customStyle="customStyle"
-            >重新识别</u-button
-          >
-        </view>
-        <view class="notip" v-if="isObject(pestResult)"> 暂无识别结果 </view>
-        <view
-          v-else
-          class="information_data"
-          v-for="(value, key) in pestResult"
-        >
-          <p>
-            <span>{{ key }}</span> <span>{{ value }}头</span>
-          </p>
-        </view>
-      </view>
-    </view>
-  </view>
+			<view class="images_box">
+				<view class="canvas-bg">
+					<!-- <canvas-mark /> -->
+					<img v-if="photos.length>0"
+						:src="photos[active].addr+'?x-oss-process=image/resize,w_130/quality,q_90'" alt=""
+						@click="examine()" />
+				</view>
+				<view class="image-flex">
+					<view v-for="(item, index) in photos" :key="index">
+						<image class="my-img" :class="active == index ? 'active' : ''" :src="item.addr"
+							@click="imgClick(item, index)" mode=""></image>
+					</view>
+				</view>
+			</view>
+			<view class="information">
+				<view class="btn">
+					<p class="title">当前图片识别结果</p>
+					<u-button size="mini" :loading="respetLoading" class="btn_box" throttle-time="500"
+						@click="resetPest" :customStyle="customStyle">重新识别</u-button>
+				</view>
+				<view class="notip" v-if="isObject(pestResult)"> 暂无识别结果 </view>
+				<view v-else class="information_data" v-for="(value, key) in pestResult">
+					<p>
+						<span>{{ key }}</span> <span>{{ value }}头</span>
+					</p>
+				</view>
+			</view>
+		</view>
+	</view>
 </template>
 
 <script>
-import jsencrypt from '@/components/jsencrypt/jsencrypt.vue';
-import insect_dict from '../../../../static/data/cbd_pest_library.js';
-import canvasMark from '@/components/Draw/index.vue';
-export default {
-  data() {
-    return {
-      maxDate: '2050-12-31',
-      device_type: '',
-      device_id: '',
-      d_id: '',
-      calendarShow: false,
-      start_time: '',
-      end_time: '',
-      photos: [],
+	import jsencrypt from '@/components/jsencrypt/jsencrypt.vue';
+	// import insect_dict from '../../../../static/data/cbd_pest_library.js';
+	import canvasMark from '@/components/Draw/index.vue';
+	export default {
+		data() {
+			return {
+				maxDate: '2050-12-31',
+				device_type: '',
+				device_id: '',
+				d_id: '',
+				calendarShow: false,
+				start_time: '',
+				end_time: '',
+				photos: [],
 
-      active: 0,
-      respetLoading: false,
-    };
-  },
-  components: { canvasMark },
-  computed: {
-    customStyle() {
-      return {
-        background: '#018B3F',
-        fontSize: '12px',
-        border: 'none',
-        color: '#fff',
-      };
-    },
-    pestResult() {
-      if (this.photos == 0) {
-        return {};
-      }
-      let obj = {};
-      let item = this.photos[this.active];
-      console.log('选中', item);
-      if (item.is_mark == 0) {
-        // 机器识别
-        let aiLabel = [];
-        if (item.label) {
-          aiLabel = JSON.parse(item.label.replace(/'/g, '"'));
-          aiLabel.forEach((label) => {
-            const text = Object.keys(label)[0];
-            if (obj[insect_dict[text]]) {
-              obj[insect_dict[text]]++;
-            } else {
-              obj[insect_dict[text]] = 1;
-            }
-          });
-        }
-      } else {
-        item.mark.forEach((item) => {
-          if (obj[item.text]) {
-            obj[item.text]++;
-          } else {
-            obj[item.text] = 1;
-          }
-        });
-      }
-      return obj;
-    },
-    previewImages() {
-      let list = [];
-      if (this.photos.length > 0) {
-        this.photos.forEach((photo) => {
-          list.push(photo.addr);
-        });
-        return list;
-      } else {
-        return [];
-      }
-    },
-  },
-  methods: {
-    clickLeft() {
-      uni.navigateBack();
-    },
-    isObject(obj) {
-      return Object.keys(obj).length == 0;
-    },
-    change(e) {
-      this.start_time = e.startDate;
-      this.end_time = e.endDate;
-      this.page = 1;
-      this.photos = [];
-      this.getImgData();
-    },
-    async getImgData() {
-      const res = await this.$myRequest({
-        url: '/api/api_gateway?method=new_gateway.photo_info.photo_list',
-        data: {
-          id: this.d_id,
-          device_type_id: this.device_type,
-          page: 1,
-          page_number: 99999,
-          start: +new Date(this.start_time + ' 00:00:00') / 1000,
-          end: +new Date(this.end_time + ' 23:59:59') / 1000,
-        },
-      });
-      this.photos = this.photos.concat(res.data);
-      console.log(this.photos, '---');
-      // this.photos = res.data
-    },
-    async resetPest() {
-      this.respetLoading = true;
-      const res = await this.$myRequest({
-        url: '/api/api_gateway?method=new_gateway.photo_info.identify_again',
-        data: {
-          id: this.photos[this.active].id,
-          device_type_id: this.device_type,
-        },
-      });
-      this.respetLoading = false;
-      if (res.code == 2000) {
-        uni.showToast({
-          title: '操作成功',
-          duration: 2000,
-        });
-      } else {
-        uni.showToast({
-          title: res.msg,
-          duration: 2000,
-        });
-      }
-    },
-    examine() {
-      uni.previewImage({
-        urls: this.previewImages,
-      });
-    },
-    imgClick(item, index) {
-      this.active = index;
-    },
-  },
-  onLoad(option) {
-    console.log('结果页面:', option);
-    this.device_id = option.device_id;
-    this.d_id = option.d_id;
-    this.device_type = option.device_type;
-    let endTime = +new Date(option.time) / 1000 + 60 * 60 * 24;
-    let startTime = +new Date(option.time) / 1000;
+				active: 0,
+				respetLoading: false,
+				typeName: 1, // 1: 测报灯  2:病虫害可视监测 3:吸虫塔 4:孢子仪 5:毫米虫情测报 6:智慧虫情测报平台(定制)
+				insect_dict: {}
+			};
+		},
+		components: {
+			canvasMark
+		},
+		computed: {
+			customStyle() {
+				return {
+					background: '#018B3F',
+					fontSize: '12px',
+					border: 'none',
+					color: '#fff',
+				};
+			},
+			pestResult() {
+				if (this.photos == 0) {
+					return {};
+				}
+				let obj = {};
+				let item = this.photos[this.active];
+				
+				if (item.is_mark == 0) {
+					// 机器识别
+					let aiLabel = [];
+					if (item.label) {
+						aiLabel = JSON.parse(item.label.replace(/'/g, '"'));
+						console.log(this.insect_dict,'---')
+						aiLabel.forEach((label) => {
+							const text = Object.keys(label)[0];
+							if (obj[this.insect_dict[text]]) {
+								obj[this.insect_dict[text]]++;
+							} else {
+								obj[this.insect_dict[text]] = 1;
+							}
+						});
+					}
+				} else {
+					item.mark.forEach((item) => {
+						if (obj[item.text]) {
+							obj[item.text]++;
+						} else {
+							obj[item.text] = 1;
+						}
+					});
+				}
+				return obj;
+			},
+			previewImages() {
+				let list = [];
+				if (this.photos.length > 0) {
+					this.photos.forEach((photo) => {
+						list.push(photo.addr);
+					});
+					return list;
+				} else {
+					return [];
+				}
+			},
+		},
+		methods: {
+			clickLeft() {
+				uni.navigateBack();
+			},
+			isObject(obj) {
+				return Object.keys(obj).length == 0;
+			},
+			change(e) {
+				this.start_time = e.startDate;
+				this.end_time = e.endDate;
+				this.page = 1;
+				this.photos = [];
+				this.getImgData();
+			},
+			async getImgData() {
+				const res = await this.$myRequest({
+					url: '/api/api_gateway?method=new_gateway.photo_info.photo_list',
+					data: {
+						id: this.d_id,
+						device_type_id: this.device_type,
+						page: 1,
+						page_number: 99999,
+						start: +new Date(this.start_time + ' 00:00:00') / 1000,
+						end: +new Date(this.end_time + ' 23:59:59') / 1000,
+					},
+				});
+				this.photos = this.photos.concat(res.data);
+				console.log(this.photos, '---');
+				// this.photos = res.data
+			},
+			async resetPest() {
+				this.respetLoading = true;
+				const res = await this.$myRequest({
+					url: '/api/api_gateway?method=new_gateway.photo_info.identify_again',
+					data: {
+						id: this.photos[this.active].id,
+						device_type_id: this.device_type,
+					},
+				});
+				this.respetLoading = false;
+				if (res.code == 2000) {
+					uni.showToast({
+						title: '操作成功',
+						duration: 2000,
+					});
+				} else {
+					uni.showToast({
+						title: res.msg,
+						duration: 2000,
+					});
+				}
+			},
+			examine() {
+				uni.previewImage({
+					urls: this.previewImages,
+				});
+			},
+			imgClick(item, index) {
+				this.active = index;
+			},
+			async getAllPestList() {
+				const res = await this.$myRequest({
 
-    this.end_time = this.formatTime(endTime * 1000, 'yyyy-MM-dd');
-    this.start_time = this.formatTime(startTime * 1000, 'yyyy-MM-dd');
-    this.getImgData();
-  },
-};
+					url: '/api/api_gateway?method=forecast.pest_info.pest_dict',
+					data:{type_name: this.typeName}
+				})
+			
+				this.insect_dict = res
+				this.getImgData();
+			}
+		},
+		onLoad(option) {
+			console.log('结果页面:', option);
+			this.device_id = option.device_id;
+			this.d_id = option.d_id;
+			this.device_type = option.device_type;
+			let endTime = +new Date(option.time) / 1000 + 60 * 60 * 24;
+			let startTime = +new Date(option.time) / 1000;
+
+			this.end_time = this.formatTime(endTime * 1000, 'yyyy-MM-dd');
+			this.start_time = this.formatTime(startTime * 1000, 'yyyy-MM-dd');
+			this.getAllPestList()
+
+
+		},
+	};
 </script>
 
 <style lang="scss" scoped>
-::v-deep .u-calendar__action {
-  display: flex;
-  justify-content: space-around;
+	::v-deep .u-calendar__action {
+		display: flex;
+		justify-content: space-around;
+
+		.u-calendar__action__text {
+			line-height: 25px;
+		}
+	}
+
+	page {
+		background: #f7f7f7;
+	}
+
+	.img-result {
+		padding: 0rpx 48rpx;
+		background-color: #f7f7f7;
+		// height: calc(100vh - 120rpx);
+	}
+
+	.tile-item {
+		margin-top: 32rpx;
+		// padding: 0rpx 32rpx;
+		box-sizing: border-box;
+		height: 92rpx;
+		line-height: 92rpx;
+		display: flex;
+		justify-content: space-between;
+		background: #f7f7f7;
+
+		.calendar {
+			width: 100%;
+			background-color: #fff;
+			border-radius: 24rpx;
+			padding: 0 18rpx;
+			color: #5c5c5c;
+			text-align: center;
+		}
+
+		.camera {}
+	}
+
+	.images_box {
+		width: 100%;
+		height: 742rpx;
+		padding: 32rpx;
+		margin: 32rpx 0;
+		box-sizing: border-box;
+		background: #fff;
+		border-radius: 24rpx;
+
+		.canvas-bg {
+			height: 558rpx;
+			position: relative;
+			margin-bottom: 16rpx;
+
+			img {
+				width: 100%;
+				height: 100%;
+			}
+		}
+
+		.image-flex {
+			width: 100%;
+			overflow-x: scroll;
+			display: flex;
+			flex-wrap: nowrap;
+			gap: 20rpx;
+			padding: 10rpx 0;
+			box-sizing: border-box;
+
+			.my-img {
+				width: 96rpx;
+				height: 96rpx;
+				border-radius: 4rpx;
+				opacity: 0.5;
+			}
+
+			.active {
+				border: 4px solid #ccc;
+				animation: borderAnimation 1s;
+				position: relative;
+				top: -4px;
+				opacity: 1;
+			}
+		}
+	}
+
+	.information {
+		padding-bottom: 2rpx;
+
+		.btn {
+			overflow: hidden;
+		}
+
+		.title {
+			float: left;
+			color: #999999;
+		}
+
+		.notip {
+			text-align: center;
+			color: #999999;
+			margin-top: 100rpx;
+		}
+
+		.btn_box {
+			float: right;
+			// border-radius: 8rpx;
+			// background: #018B3F;
+			// padding: 2rpx 10rpx;
+			// color: #fff;
+			// font-size: 24rpx;
+		}
+
+		.information_data {
+			margin: 32rpx 0;
+			display: flex;
+			background-color: #fff;
+			// padding: 20rpx 10rpx;
+			height: 104rpx;
+			line-height: 104rpx;
+			border-radius: 24rpx;
+			padding: 0 32rpx;
 
-  .u-calendar__action__text {
-    line-height: 25px;
-  }
-}
-page {
-  background: #f7f7f7;
-}
-.img-result {
-  padding: 0rpx 48rpx;
-  background-color: #f7f7f7;
-  // height: calc(100vh - 120rpx);
-}
-.tile-item {
-  margin-top: 32rpx;
-  // padding: 0rpx 32rpx;
-  box-sizing: border-box;
-  height: 92rpx;
-  line-height: 92rpx;
-  display: flex;
-  justify-content: space-between;
-  background: #f7f7f7;
-  .calendar {
-    width: 100%;
-    background-color: #fff;
-    border-radius: 24rpx;
-    padding: 0 18rpx;
-    color: #5c5c5c;
-    text-align: center;
-  }
-  .camera {
-  }
-}
-.images_box {
-  width: 100%;
-  height: 742rpx;
-  padding: 32rpx;
-  margin: 32rpx 0;
-  box-sizing: border-box;
-  background: #fff;
-  border-radius: 24rpx;
-  .canvas-bg {
-    height: 558rpx;
-    position: relative;
-    margin-bottom: 16rpx;
-    img {
-      width: 100%;
-      height: 100%;
-    }
-  }
-  .image-flex {
-    width: 100%;
-    overflow-x: scroll;
-    display: flex;
-    flex-wrap: nowrap;
-    gap: 20rpx;
-    padding: 10rpx 0;
-    box-sizing: border-box;
-    .my-img {
-      width: 96rpx;
-      height: 96rpx;
-      border-radius: 4rpx;
-      opacity: 0.5;
-    }
-    .active {
-      border: 4px solid #ccc;
-      animation: borderAnimation 1s;
-      position: relative;
-      top: -4px;
-      opacity: 1;
-    }
-  }
-}
+			p {
+				// margin-right: 20rpx;
+				font-size: 24rpx;
+				color: #666666;
+			}
+		}
+	}
 
-.information {
-  padding-bottom: 2rpx;
-  .btn {
-    overflow: hidden;
-  }
-  .title {
-    float: left;
-    color: #999999;
-  }
-  .notip {
-    text-align: center;
-    color: #999999;
-    margin-top: 100rpx;
-  }
-  .btn_box {
-    float: right;
-    // border-radius: 8rpx;
-    // background: #018B3F;
-    // padding: 2rpx 10rpx;
-    // color: #fff;
-    // font-size: 24rpx;
-  }
-  .information_data {
-    margin: 32rpx 0;
-    display: flex;
-    background-color: #fff;
-    // padding: 20rpx 10rpx;
-    height: 104rpx;
-    line-height: 104rpx;
-    border-radius: 24rpx;
-    padding: 0 32rpx;
-    p {
-      // margin-right: 20rpx;
-      font-size: 24rpx;
-      color: #666666;
-    }
-  }
-}
+	@keyframes borderAnimation {
+		0% {
+			opacity: 0.5;
+		}
 
-@keyframes borderAnimation {
-  0% {
-    opacity: 0.5;
-  }
-  100% {
-    opacity: 1;
-  }
-}
-</style>
+		100% {
+			opacity: 1;
+		}
+	}
+</style>

+ 172 - 60
pages/cb/equip-detail/equip-detail-new.vue

@@ -77,7 +77,7 @@
         <span> </span>
         <span class="float-right">
           <span v-if="equipInfo.sban_expire_time > 0">
-            {{ equipInfo.sban_expire_time | timeFormat }}
+            {{ equipInfo.sban_expire_time | timeFormat('yyyy-MM-dd') }}
           </span>
           <span v-else> 暂未设置色板 </span>
           <u-icon
@@ -99,7 +99,7 @@
         <span> </span>
         <span class="float-right">
           <span v-if="equipInfo.xy_expire_time > 0">
-            {{ equipInfo.xy_expire_time | timeFormat }}
+            {{ equipInfo.xy_expire_time | timeFormat('yyyy-MM-dd') }}
           </span>
           <span v-else> 暂未设置诱芯 </span>
           <u-icon
@@ -235,69 +235,181 @@ export default {
             tf: true,
           });
         } else if (item.purview_name == '分析') {
-          this.cbd.unshift({
-            icon: '/image/cb/3.png',
-            tex: item.purview_name,
-            path: '/pages/cb/cbd/equip-set/new-analyse',
-            tf: true,
-          });
+          // this.cbd.unshift({
+          //   icon: '/image/cb/3.png',
+          //   tex: item.purview_name,
+          //   path: '/pages/cb/cbd/equip-set/new-analyse',
+          //   tf: true,
+          // });
         }
       });
       return this.cbd;
     },
     curState() {
-      return [
-        {
-          icon: '/image/cb/icon02.png',
-          txt: '在线状态',
-          value: this.newState.status,
-        },
-        {
-          icon: '/image/cb/icon05.png',
-          txt: '开关状态',
-          value: Number(this.newState.ds) == 1 ? '开机' : '关机',
-        },
-        {
-          icon: '/image/cb/icon08.png',
-          txt: '环境温度(℃)',
-          value: this.newState.tem,
-        },
-        {
-          icon: '/image/cb/icon07.png',
-          txt: '环境湿度(%)',
-          value: this.newState.hum,
-        },
-        {
-          icon: '/image/prevention/icon16.png',
-          txt: '信号强度',
-          value: this.newState.signal,
-        },
-        {
-          icon: '/image/cb/icon12.png',
-          txt: '设备版本',
-          value: this.newState.dver_num,
-        },
-        {
-          icon: '/image/cb/icon17.png',
-          txt: '雨控状态',
-          value: this.newState.rps,
-        },
-        {
-          icon: '/image/cb/icon14.png',
-          txt: '温控状态',
-          value: this.newState.tps,
-        },
-        {
-          icon: '/image/cb/icon06.png',
-          txt: '光控状态',
-          value: this.newState.lps,
-        },
-        {
-          icon: '/image/cb/icon18.png',
-          txt: '控制模式',
-          value: this.newState.control,
-        },
-      ];
+		if(this.equipInfo.type==33){
+			return [
+			  
+			  {
+			    icon: '/image/cb/icon06.png',
+			    txt: '电压',
+			    value: this.newState.voltage,
+			  },
+			{
+			  icon: '/image/cb/icon05.png',
+			  txt: '照片上传频率',
+			  value: this.newState.takePhotoIntervalMinutes,
+			},
+			{
+			  icon: '/image/cb/icon02.png',
+			  txt: '在线状态',
+			  value: this.newState.status,
+			},{
+			    icon: '/image/cb/icon18.png',
+			    txt: '控制模式',
+			    value: this.newState.ctrlMode,
+			  },
+			  {
+			    icon: '/image/cb/icon08.png',
+			    txt: '环境温度(℃)',
+			    value: this.newState.temperature,
+			  },
+			  {
+			    icon: '/image/cb/icon07.png',
+			    txt: '环境湿度(%)',
+			    value: this.newState.humidity,
+			  },
+			  {
+			    icon: '/image/prevention/icon16.png',
+			    txt: '信号强度',
+			    value: this.newState.rssi,
+			  },
+			  {
+			    icon: '/image/cb/icon12.png',
+			    txt: '设备版本',
+			    value: this.newState.dver_num,
+			  },
+
+			  
+			  
+			]
+		}else if(this.equipInfo.type==34){
+			return [
+				{
+				  icon: '/image/cb/icon06.png',
+				  txt: '电量',
+				  value: this.newState.vbat,
+				},{
+			    icon: '/image/cb/icon18.png',
+			    txt: '控制模式',
+			    value: this.newState.control,
+			  },
+			  {
+			    icon: '/image/cb/icon02.png',
+			    txt: '设备状态',
+			    value: this.newState.status,
+			  },
+			  {
+			    icon: '/image/cb/icon05.png',
+			    txt: '照片上传频率',
+			    value:this.newState.photo_fre +'min',
+			  },
+			  // {
+			  //   icon: '/image/cb/icon08.png',
+			  //   txt: '环境温度(℃)',
+			  //   value: this.newState.tem,
+			  // },
+			  // {
+			  //   icon: '/image/cb/icon07.png',
+			  //   txt: '环境湿度(%)',
+			  //   value: this.newState.hum,
+			  // },
+			  {
+			    icon: '/image/prevention/icon16.png',
+			    txt: '信号强度',
+			    value: this.newState.signal,
+			  },
+			  {
+			    icon: '/image/cb/icon12.png',
+			    txt: '设备版本',
+			    value: this.newState.dver_num,
+			  },
+			  // {
+			  //   icon: '/image/cb/icon17.png',
+			  //   txt: '雨控状态',
+			  //   value: this.newState.rps,
+			  // },
+			  // {
+			  //   icon: '/image/cb/icon14.png',
+			  //   txt: '温控状态',
+			  //   value: this.newState.tps,
+			  // },
+			  // {
+			  //   icon: '/image/cb/icon06.png',
+			  //   txt: '光控状态',
+			  //   value: this.newState.lps,
+			  // },
+			  
+			]
+		}else if(this.equipInfo.type==32){
+			return [
+				{
+				  icon: '/image/cb/icon06.png',
+				  txt: '电量',
+				  value: this.newState.voltage,
+				},{
+			    icon: '/image/cb/icon18.png',
+			    txt: '控制模式',
+			    value: this.newState.control,
+			  },
+			  {
+			    icon: '/image/cb/icon02.png',
+			    txt: '设备状态',
+			    value: this.newState.status,
+			  },
+			  {
+			    icon: '/image/cb/icon05.png',
+			    txt: '照片上传频率',
+			    value:this.newState.photo_fre +'min',
+			  },
+			  {
+			    icon: '/image/cb/icon08.png',
+			    txt: '环境温度(℃)',
+			    value: this.newState.tem,
+			  },
+			  {
+			    icon: '/image/cb/icon07.png',
+			    txt: '环境湿度(%)',
+			    value: this.newState.hum,
+			  },
+			  {
+			    icon: '/image/prevention/icon16.png',
+			    txt: '信号强度',
+			    value: this.newState.signal,
+			  },
+			  {
+			    icon: '/image/cb/icon12.png',
+			    txt: '设备版本',
+			    value: this.newState.dver_num,
+			  },
+			  // {
+			  //   icon: '/image/cb/icon17.png',
+			  //   txt: '雨控状态',
+			  //   value: this.newState.rps,
+			  // },
+			  // {
+			  //   icon: '/image/cb/icon14.png',
+			  //   txt: '温控状态',
+			  //   value: this.newState.tps,
+			  // },
+			  // {
+			  //   icon: '/image/cb/icon06.png',
+			  //   txt: '光控状态',
+			  //   value: this.newState.lps,
+			  // },
+			  
+			]
+		}
+      
     },
     operateOptions() {
       return {

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

@@ -78,7 +78,7 @@
       </view>
       <view class="caobox_item" v-if="$QueryPermission(248)" @click="toset">
         <image
-			
+			mode="widthFix"
           :src="$imageURL+'/bigdata_app/image/cb/4.png'"        
 		  ></image>
         <view class=""> 设备控制 </view>

+ 95 - 11
pages/distribution/index.vue

@@ -3,7 +3,7 @@
 		<view class="page-body">
 			<view class="utabs">
 				<view style="width: 95%;margin: 0 auto;">
-					<u-tabs :list="list" :is-scroll="true" :current="current" @change="change" item-width="140"
+					<u-tabs :list="list" :is-scroll="true" :current="current" @change="change" 
 						font-size="24" gutter="20" bar-width="60" active-color="#42b983"></u-tabs>
 				</view>
 			</view>
@@ -203,7 +203,8 @@
 					this.history(imports)
 				}, 1000)()
 			},
-			eqinfo(item) { //设备信息
+async eqinfo(item) { //设备信息
+				item.type = this.punctuation_type
 				if (this.punctuation_type == '') {
 					uni.showToast({
 						title: '请点击需查看的设备',
@@ -211,10 +212,34 @@
 						icon: "none"
 					});
 				} else {
+
+					const resDefault = await this.$myRequest({
+						url: '/api/api_gateway?method=forecast.worm_lamp.lamp_list',
+						data: {
+							device_type_id: this.punctuation_type,
+							page: 1,
+							page_size: "10",
+							device_id: item.device_id,
+						}
+					})
+					let itemDefault = {
+						...item
+					}
+					if (resDefault.counts == 1) {
+						itemDefault = {
+							...item,
+							...resDefault.data[0]
+						}
+					}
 					switch (this.punctuation_type) {
+						case 15:
+							uni.navigateTo({
+								url: '../environment/gsequipment?shebei=' + JSON.stringify(itemDefault),
+							});
+							break;
 						case 2:
 							uni.navigateTo({
-								url: "../prevention/equipmentdetails?shebei=" + JSON.stringify(item)
+								url: "../prevention/equipmentdetails?shebei=" + JSON.stringify(itemDefault)
 							})
 							break;
 							// case 3:
@@ -225,15 +250,68 @@
 							// 	})
 							// 	break;
 						case 5:
+							const res = await this.$myRequest({
+								url: '/api/api_gateway?method=weather.weather.qxz_page',
+								data: {
+									page: 1,
+									device_status: '',
+									page_size: 10,
+									device_id: item.device_id,
+								},
+							})
+							let items = {
+								...item
+							}
+							if (res.nums == 1) {
+								items = {
+									...item,
+									...res.ids[0]
+								}
+							}
 							uni.navigateTo({
-								url: "../environment/equipment?shebei=" + JSON.stringify(item)
+								url: "../environment/equipment?shebei=" + JSON.stringify(items)
+							})
+							break;
+						case 45:
+							const res45 = await this.$myRequest({
+								url: '/api/api_gateway?method=weather.weather.shang_qing_qxz_page',
+								data: {
+									page: 1,
+									page_size: "10",
+									device_id: item.device_id,
+								}
+							})
+							let item45 = {
+								...item
+							}
+							if (res45.nums == 1) {
+								item45 = {
+									...items,
+									...res45.ids[0]
+								}
+							}
+							uni.navigateTo({
+								url: "../environment/equipment?shebei=" + JSON.stringify(item45)
+							})
+							break;
+						case 6:
+							uni.navigateTo({
+								url: "/pages/webview?device_id=" + item.device_id + "&accessToken=" + uni
+									.getStorageSync('session_key')
+							})
+							break;
+						case 43:
+							uni.navigateTo({
+								url: "../fmSys/details?info=" + JSON.stringify(itemDefault)
+							})
+							break;
+						case 44:
+							uni.navigateTo({
+								url: "/pages/webview?device_id=" + item.device_id + "&accessToken=" + uni
+									.getStorageSync('session_key') +
+									'&type=dgp'
 							})
 							break;
-							// case 6:
-							// 	// uni.navigateTo({
-							// 	// 	url: "../prevention/ucharts?d_id=" + this.punctuation_did + "&device_id=" + this.punctuation_id
-							// 	// })
-							// 	break;
 							// case 7:
 							// 	uni.navigateTo({
 							// 		url: "../cb/bzy/equip-set/bzyhistoryile?d_id=" + this.punctuation_did + "&device_id=" + this.device_id
@@ -241,12 +319,18 @@
 							// 	break;
 						case 10:
 							uni.navigateTo({
-								url: "../cb/xy2.0/particulars?info=" + JSON.stringify(item)
+								url: "../cb/xy2.0/particulars?info=" + JSON.stringify(itemDefault)
 							})
 							break;
+						case 26:
+						case 11:
+							uni.navigateTo({
+								url: '../disease/cmb?shebei=' + JSON.stringify(itemDefault),
+							});
+							break;
 						default:
 							uni.navigateTo({
-								url: "../cb/equip-detail/equip-detail?info=" + JSON.stringify(item)
+								url: "../cb/equip-detail/equip-detail?info=" + JSON.stringify(itemDefault)
 							})
 							break;
 					}

+ 65 - 19
pages/fourBase/basefacility.vue

@@ -6,9 +6,11 @@
 				<uni-nav-bar @clickLeft="clickLeft" left-icon="back" left-text="返回" title="基地设备"></uni-nav-bar>
 			</view>
 			<view class="ass_list">
-				<view class="equipment" v-for="(items,indexs) in assignments" :key="items.id" v-if="tishiTF" @click="skip(items)">
+				<view class="equipment" v-for="(items,indexs) in assignments" :key="items.id" v-if="tishiTF"
+					@click="skip(items)">
 					<view class="equipment_top">
-						<image :src="$imageURL+'/bigdata_app/image/fourMoodBase/'+items.equip_type+'.png'" mode="" class="equipment_top_img"></image>
+						<image :src="$imageURL+'/bigdata_app/image/fourMoodBase/'+items.equip_type+'.png'" mode=""
+							class="equipment_top_img"></image>
 						<span class="equipment_top_name">{{items.type_name}}</span>
 					</view>
 					<view class="equipment_bot">
@@ -55,12 +57,12 @@
 				}, {
 					path: "/image/fourMoodBase/bzy.png",
 					id: 7
-				},{
+				}, {
 					path: "/image/fourMoodBase/10.png",
 					id: 10
 				}],
 				tishiTF: false,
-				isTop:false
+				isTop: false
 			}
 		},
 		methods: {
@@ -99,30 +101,72 @@
 					duration: 500
 				})
 			},
-			skip(items){
-				console.log(items)
-				var item = JSON.stringify(items)
-				switch (items.equip_type){
-					case 5 :
+			async skip(items) {
+				const resDefault = await this.$myRequest({
+					url: '/api/api_gateway?method=forecast.worm_lamp.lamp_list',
+					data: {
+						device_type_id: items.equip_type,
+						page: 1,
+						page_size: "10",
+						device_id: items.device_id,
+					}
+				})
+				let itemDefault = {
+					...items
+				}
+				if (resDefault.counts == 1) {
+					itemDefault = {
+						...items,
+						...resDefault.data[0]
+					}
+				}
+				var item = JSON.stringify(itemDefault)
+				switch (items.equip_type) {
+					case 5:
+						uni.navigateTo({
+							url: "../environment/equipment?shebei=" + item
+						})
+						break
+					case 6:
 						uni.navigateTo({
-							url: "../environment/equipment?shebei=" + JSON.stringify(items)
+							url: "/pages/webview?device_id=" + items.device_id + "&accessToken=" + this
+								.accessToken
 						})
-					break
-					case 6 :
+						break
+					case 44:
 						uni.navigateTo({
-							url: "/pages/webview?device_id=" + items.device_id + "&accessToken=" + this.accessToken
+							url: "/pages/webview?device_id=" + items.device_id + "&accessToken=" + uni
+								.getStorageSync('session_key') + '&type=dgp'
 						})
-					break
-					case 10 :
+						break
+					case 43:
+					
+						uni.navigateTo({
+							url: "../fmSys/details?info=" + item
+						})
+						break;
+					case 10:
 						uni.navigateTo({
 							url: '/pages/cb/xy2.0/particulars?info=' + item
 						});
-					break
+						break
+					case 8:
+						// item.type = this.type_id;
+						uni.navigateTo({
+							url: '../cb/thxydetail/thxydetail?imei=' + items.device_id,
+						});
+						break;
+					case 26:
+					case 11:
+						uni.navigateTo({
+							url: '../disease/cmb?shebei=' + item,
+						});
+						break;
 					default:
 						uni.navigateTo({
 							url: '/pages/cb/equip-detail/equip-detail?info=' + item
 						});
-					break
+						break
 				}
 			}
 		},
@@ -209,14 +253,16 @@
 			}
 		}
 	}
+
 	.top {
 		position: fixed;
 		right: 30px;
 		bottom: 100px;
 		z-index: 100;
-		image{
+
+		image {
 			width: 100rpx;
 			height: 100rpx;
 		}
 	}
-</style>
+</style>

+ 15 - 3
pages/monitor/index.vue

@@ -133,10 +133,22 @@
 					url: "../index/index"
 				})
 			},
+			  openExternalLink(item) {
+			      plus.runtime.openURL('https://wx.hnyfwlw.com/wexin/h52.html'+"?device_id=" + item.device_id + "&accessToken=" + uni.getStorageSync('session_key'))
+			    },
 			itemClick(item) {
-				uni.navigateTo({
-					url: "/pages/webview?device_id=" + item.device_id + "&accessToken=" + this.accessToken
-				})
+					
+				if(item.type_id==0){
+					uni.navigateTo({
+						url: "/pages/webview?device_id=" + item.device_id + "&accessToken=" + uni.getStorageSync('session_key')
+					})
+				}else{
+					// this.openExternalLink(item)
+					uni.navigateTo({
+						url: "/pages/webview?device_id=" + item.device_id + "&accessToken=" + this.accessToken
+					})
+				}
+				
 			},
 			top() {
 				uni.pageScrollTo({

+ 7 - 5
pages/webview.vue

@@ -1,6 +1,6 @@
 <template>
 	<view class="webview">
-		<web-view :src="url" id="webcon" @message="handleMessage">
+		<web-view :src="url" id="webcon" @message="handleMessage" cache-control="no-cache">
 		</web-view>
 	</view>
 </template>
@@ -16,9 +16,11 @@
 		},
 		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
+			this.accessToken = uni.getStorageSync('session_key')
+			// this.url = "http://192.168.2.86:9090/h52.html?device_id="+ this.device_id + "&accessToken=" + this.accessToken+'&t='+Date.now()
+			// this.url = "https://wx.hnyfwlw.com/wexin/h52.html?device_id=" + this.device_id + "&accessToken=" + this.accessToken
+			this.url = "/static/h52.html?device_id=" + this.device_id + "&accessToken=" + this.accessToken+'&t='+Date.now()
+			
 			// uni.setStorage({
 			// 	key: 'obj',
 			// 	data: JSON.stringify({
@@ -35,7 +37,7 @@
 		},
 		methods: {
 			getWebviewPage(id) {
-				this.url = "/static/h5.html?device_id=" + this.device_id + "&accessToken=" + this.accessToken
+				this.url = "/static/h5.html?device_id=" + this.device_id + "&accessToken=" + this.accessToken+'&t='+Date.now()
 				// uni.setStorage({
 				// 	key: 'obj',
 				// 	data: JSON.stringify({

BIN
static/360ARTagAsserts/Blue/Line_0.png


BIN
static/360ARTagAsserts/Blue/Line_1.png


BIN
static/360ARTagAsserts/Blue/TextLabel_0.png


BIN
static/360ARTagAsserts/Blue/TextLabel_1.png


BIN
static/360ARTagAsserts/Blue/gif/point_0.png


BIN
static/360ARTagAsserts/Blue/gif/point_1.png


BIN
static/360ARTagAsserts/Drops-1.png


BIN
static/360ARTagAsserts/Drops-2.png


BIN
static/360ARTagAsserts/Green/Line_0.png


BIN
static/360ARTagAsserts/Green/Line_1.png


BIN
static/360ARTagAsserts/Green/TextLabel_0.png


BIN
static/360ARTagAsserts/Green/TextLabel_1.png


BIN
static/360ARTagAsserts/Green/gif/point_0.png


BIN
static/360ARTagAsserts/Green/gif/point_1.png


BIN
static/360ARTagAsserts/glasses.png


BIN
static/360ARTagAsserts/loading.gif


Разлика између датотеке није приказан због своје велике величине
+ 0 - 21
static/WasmLib/Common/libH264Enc.js


BIN
static/WasmLib/Common/libH264Enc.wasm


Разлика између датотеке није приказан због своје велике величине
+ 0 - 21
static/WasmLib/Common/libIVSDrawer.js


BIN
static/WasmLib/Common/libIVSDrawer.wasm


Разлика између датотеке није приказан због своје велике величине
+ 0 - 21
static/WasmLib/Common/libRenderEngine.js


BIN
static/WasmLib/Common/libRenderEngine.wasm


+ 0 - 50
static/WasmLib/Common/libmavasp_litepacket.data

@@ -1,50 +0,0 @@
-[COMMON]
-Common_Frequency=8000
-Common_Offset=2
-Common_Channels=1
-Common_Depth=16
-Common_ArrayProcEnable=0
-Common_ArrayNum=1
-Common_SettingMode=1
-Common_FunctionalMode=0
-Common_SignalConversionMode=1
-Common_ModuleFileOutEnable=1
-Common_MuduleSettingMode=1
-Common_OutLenMode=0
-Common_DeteOutLen=0
-Common_LogfileEnable=0
-
-[Audio_Framework_AEC]=1
-aec_Delaymode=0
-aec_Delayvalue=0
-aec_Lfmode=0x00000010
-aec_Partitionnumber=40
-aec_Filtermode=0
-aec_Nlpmode=1
-aec_Nlpecmode=2
-aec_Nlpsuppressfactor=0.99
-aec_Procmode=0
-aec_Runmode=0
-aec_Outmode=0
-aec_Bufsizesrc=1000
-aec_Bufsizeref=1000
-aec_Bufsizeout=1000
-aec_ModulePerformanceEnable=0
-aec_ModuleUnitoftime=0
-aec_DebugInfoLevel=0
-
-[Audio_Framework_ANS]=1
-ans_LoStopFreq=0
-ans_HiStopFreq=4000
-ans_Mode=2
-ans_ModulePerformanceEnable=0
-ans_ModuleUnitoftime=0
-ans_DebugInfoLevel=0
-
-[Audio_Framework_AGC]=0
-agc_AimGainLevel=0x01000303
-agc_LimitLevel=0
-agc_MicLevel=255
-agc_ModulePerformanceEnable=0
-agc_ModuleUnitoftime=0
-agc_DebugInfoLevel=0

Разлика између датотеке није приказан због своје велике величине
+ 0 - 21
static/WasmLib/Common/libmavasp_litepacket.js


BIN
static/WasmLib/Common/libmavasp_litepacket.wasm


Разлика између датотеке није приказан због своје велике величине
+ 0 - 21
static/WasmLib/MultiThread/libStreamClient.js


BIN
static/WasmLib/MultiThread/libStreamClient.wasm


Разлика између датотеке није приказан због своје велике величине
+ 0 - 1
static/WasmLib/MultiThread/libStreamClient.worker.js


BIN
static/WasmLib/MultiThread/libplay.data


Разлика између датотеке није приказан због своје велике величине
+ 0 - 1
static/WasmLib/MultiThread/libplay.js


BIN
static/WasmLib/MultiThread/libplay.wasm


Разлика између датотеке није приказан због своје велике величине
+ 0 - 1
static/WasmLib/MultiThread/libplay.worker.js


Разлика између датотеке није приказан због своје велике величине
+ 0 - 1094
static/WasmLib/SingleThread/VideoDecodeWorker.js


Разлика између датотеке није приказан због своје велике величине
+ 0 - 21
static/WasmLib/SingleThread/libIVSDrawer.js


BIN
static/WasmLib/SingleThread/libIVSDrawer.wasm


Разлика између датотеке није приказан због своје велике величине
+ 0 - 21
static/WasmLib/SingleThread/libRenderEngine.js


BIN
static/WasmLib/SingleThread/libRenderEngine.wasm


Разлика између датотеке није приказан због своје велике величине
+ 0 - 21
static/WasmLib/SingleThread/libStreamClient.js


BIN
static/WasmLib/SingleThread/libStreamClient.wasm


Разлика између датотеке није приказан због своје велике величине
+ 0 - 1
static/WasmLib/SingleThread/libplay.js


BIN
static/WasmLib/SingleThread/libplay.wasm


+ 0 - 29
static/WasmLib/SingleThread/libplayAPI.js

@@ -1,29 +0,0 @@
-let SDKModule;
-
-const VIDEO_FRAME_SUB_TYPE_I = 0;					//I帧
-const VIDEO_FRAME_SUB_TYPE_P = 1;					//P帧
-const VIDEO_FRAME_SUB_TYPE_B = 2;					//B帧
-const VIDEO_FRAME_SUB_TYPE_SMART_I = 18;			//智能I帧
-const VIDEO_FRAME_SUB_TYPE_SMART_P = 19;			//智能P帧
-const VIDEO_FRAME_SUB_TYPE_SMART_I_NORENDER = 20;	//智能I帧,但不显示
-
-const ENCODE_TYPE_VIDEO_HI_H264 = 2;	//海思H.264编码格式
-const ENCODE_TYPE_VIDEO_MY_H264 = 4;	//公司H.264编码格式
-const ENCODE_TYPE_VIDEO_STD_H264 = 8;	//标准H.264编码格式
-const ENCODE_TYPE_VIDEO_H265 = 12;		//H.265编码格式
-
-const DATA_RECORD_MP4 = 5;				//录制MP4格式
-
-const SP_STREAM_TYPE_DHSTD = 8;			//dav编码格式
-const STREAM_TYPE_SVC = 13;				//H.264 SVC编码格式
-const SP_STREAM_TYPE_FLV = 18;			//flv编码格式
-
-const ENCRYPT_UNKOWN = 0;				//未知加密类型
-const ENCRYPT_AES = 1;					//AES加密类型,16进制数组格式
-const ENCRYPT_AES256 = 2;				//AES256加密类型,16进制数组格式
-const ENCRYPT_AES_STRING_FORMAT = 3;	//AES加密类型,字符串格式
-
-const CACHE_MODE_OFF = 0;				//关闭实时流自适应缓冲模式
-const ADAPTIVE_CACHE = 1;				//自适应缓冲
-const REALTIME_FIRST = 2;				//实时优先
-const FLUENCY_FIRST = 3;				//流畅优先 

+ 274 - 111
static/h52.html

@@ -6,6 +6,7 @@
 			content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />
 		<title>监控详情页</title>
 		<link href="https://unpkg.com/video.js@7.10.2/dist/video-js.min.css" rel="stylesheet" />
+		<link rel="stylesheet" href="./font/iconfont.css" />
 		<style type="text/css">
 			body {
 				margin: 0;
@@ -60,6 +61,9 @@
 				background-size: 100% auto;
 				background-repeat: no-repeat;
 				position: relative;
+				display: flex;
+				justify-content: center;
+				align-items: center;
 			}
 
 			.direc div {
@@ -68,6 +72,12 @@
 				position: absolute;
 			}
 
+			.photo {
+				font-size: 30px;
+				color: #4ec467;
+				padding: 16px;
+			}
+
 			.top {
 				top: 0;
 				left: 50px
@@ -97,7 +107,7 @@
 
 			#dialog {
 				display: none;
-				width: 200px;
+				min-width: 200px;
 				line-height: 80px;
 				background: rgba(0, 0, 0, .8);
 				color: #fff;
@@ -121,6 +131,13 @@
 				color: #338cd9;
 				font-size: 16px;
 				box-sizing: border-box;
+				display: flex;
+				justify-content: center;
+				gap: 16px;
+			}
+
+			.imgBtn div {
+				/* padding: 0 16px; */
 			}
 
 			.imgBtn img {
@@ -131,11 +148,20 @@
 				margin-right: 2px;
 				margin-bottom: 3px;
 			}
+
+			.imgBtnDgp {
+				display: none;
+			}
+			#myCanvas{
+				display: none;
+			}
 		</style>
 	</head>
 	<body>
 		<div class="btn-container">
-			<div id="box"> </div>
+			<div id="box">
+				
+			</div>
 			<div class="videoBtnPlay">
 				<img src="https://webstaticimg.oss-cn-hangzhou.aliyuncs.com/bigdata_app/img/wxplayer.png" />
 			</div>
@@ -143,6 +169,7 @@
 		<div id="dialog">
 
 		</div>
+		<canvas id="myCanvas" width="400" height="300"></canvas>
 		<div class="btn-box">
 			<div class="more" ontouchstart="_configCamera('move', 8)" ontouchend="_stopConfigCamera()">
 				<image src="https://s3.hnyfwlw.com/webstaticimg/bigdata_app/image/monitor/3.png" mode="widthFix">
@@ -155,9 +182,9 @@
 				<div class="bottom" ontouchstart="_configCamera('move', 1)" ontouchend="_stopConfigCamera()">
 
 				</div>
-				<!-- <div class="photo" ontouchstart="_configCamera('takephoto', '')">
-					11111
-				</div> -->
+				<p class="photo yficonfont icon-paizhao-xianxing" ontouchstart="_configCamera('takephoto', '')">
+
+				</p>
 				<div class="left" ontouchstart="_configCamera('move', 2)" ontouchend="_stopConfigCamera()">
 
 				</div>
@@ -171,66 +198,165 @@
 			</div>
 		</div>
 		<div class="imgBtn">
-			<img src="images/image.png" />查看图片
+			<div class="imgBtnCamrea"> <img
+					src="https://webstaticimg.oss-cn-hangzhou.aliyuncs.com/bigdata_app/img/img_icon.png" />查看图片</div>
+			<div class="imgBtnDgp"><img
+					src="https://webstaticimg.oss-cn-hangzhou.aliyuncs.com/bigdata_app/img/img_icon.png" />查看光谱图片</div>
+
 		</div>
 	</body>
-	<script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
+	<!-- <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.5.1/jquery.min.js"></script> -->
 	<!-- 微信 JS-SDK 如果不需要兼容小程序,则无需引用此 JS 文件。 -->
 	<!-- <script type="text/javascript" src="//res.wx.qq.com/open/js/jweixin-1.4.0.js"></script> -->
 	<!-- uni 的 SDK -->
-	<script type="text/javascript" src="https://js.cdn.aliyun.dcloud.net.cn/dev/uni-app/uni.webview.1.5.2.js"></script>
-
-	<script src="https://unpkg.com/video.js@7.10.2/dist/video.min.js"></script>
-	<script type="module">
-		import Player from './videoPlayer/videoPlay-js.js'
+	<!-- <script type="text/javascript" src="https://js.cdn.aliyun.dcloud.net.cn/dev/uni-app/uni.webview.1.5.2.js"></script> -->
+	<script src="./jquery-3.5.1.min.js"></script>
+	<!-- <script src="https://unpkg.com/video.js@7.10.2/dist/video.min.js"></script> -->
+	<script type="text/javascript" src="./jweixin-1.6.0.js"></script>
+	<!-- uni 的 SDK -->
+	<script type="text/javascript" src="./uni.webview.1.5.6.js" defer></script>
+	<script src="./video.min.js"></script>
+	<!-- <script src="./js/flv.min.js"></script> -->
+	<script >
+		// import Player from './videoPlayer/videoPlay-js.js'
+		// const domin = 'https://wx.hnyfwlw.com'
+		const domin = 'http://218.28.198.186:10508'
+		
 		let player = null
+		let stopTimer = 0
 		//上下左右和拍照
 		var str = window.location.search.substr(1)
 		var arr = str.split('&')
-		// console.log(str);
+		console.log(str, arr, '参数');
 		var device_id = arr[0].split('=')[1]
-		// console.log(device_id);
-		var accessToken = arr[1].split('=')[1]
-		var token=localStorage.getItem('session_key')
-		// console.log(accessToken)
+		var accessToken = arr[1].slice(12)
+		var videoType = arr[2]?.split('=')[1]
+		var token = accessToken
+
 		window._configCamera = configCamera;
 		window._stopConfigCamera = stopConfigCamera;
 		window._postPic = postPic;
+		if (videoType == 'dgp') {
+			$('.imgBtnDgp').show()
+		} else {
+			$('.imgBtnDgp').hide()
+		}
+		function captureFrame() {
+		  const video = document.getElementById('myPlayer_html5_api');
+		  const canvas = document.getElementById('myCanvas');
+		  const ctx = canvas.getContext('2d');
+		  
+		  // 设置 canvas 尺寸与视频一致
+		  canvas.width = video.videoWidth;
+		  canvas.height = video.videoHeight;
+		  console.log(ctx,'---')
+		  // 绘制当前帧到 canvas
+		  ctx.drawImage(video, 0, 0, canvas.width, canvas.height);
+		  
+		  // 获取图片数据
+		  const imageData = canvas.toDataURL('image/jpg');
+		  canvas.toBlob((blob)=>{
+			  
+			  postPic(blob)
+		  }, 'image/jpg', 0.92);
+		  // postPic(imageData)
+		  // // 可以创建图片显示或下载
+		  // const img = new Image();
+		  // img.src = imageData;
+		  // document.body.appendChild(img);
+		  
+		  // // 或者下载图片
+		  // downloadImage(imageData, 'captured-frame.png');
+		}
+		function initFlvPlayer(hlsHdSrc) {
+			var playHtml =
+				`<video width="100%" height="300px" id="huifangPlayer" controls autoplay muted></video>`;
+			$("#box").html(playHtml)
+			const container = document.getElementById('huifangPlayer')
+
+			if (flvjs.isSupported()) {
+				// console.log(videoElement);
+				// let hlsHdSrc =
+				// 	'https://cmgw-vpc.lechange.com:8890/flv/LCO/BE049D6PAJ704F1/0/1/20251126103056/openhze749205130814fecba32ac68f5d30fe0.flv?proto=https&source=open';
+				// 创建 FLV 播放器实例
+				player = flvjs.createPlayer({
+					type: 'flv', // 设置视频类型为 FLV
+					isLive: true, // 指定这是点播
+					hasAudio: false, // 指定视频流中没有音频
+					url: hlsHdSrc
+				})
+
+				// 将播放器绑定到 HTML 视频元素
+				player.attachMediaElement(container)
+				// 加载视频流
+				player.load()
+				// 播放视频
+				player.play()
+
+			}
+		}
+
+		function destroyPlayer() {
+			if (player) {
+				const container = document.getElementById('huifangPlayer')
+				player.pause()
+				player.unload()
+				player.detachMediaElement()
+				player.destroy()
+				player = null
+				player = ''
+			}
+		}
 
 		function configCamera(ctrl, movenum) {
 			if (ctrl == "takephoto") {
 				if (player) {
 					// 云联的拍照特殊处理
-					player.screenshot('yunlianPlayer')
+					// player.screenshot('yunlianPlayer')
+					$('#dialog').html('拍照指令正在下发,请等待...').stop().show(50)
+					captureFrame()
 				} else {
+
+					$('#dialog').html('拍照指令正在下发,请等待...').stop().show(50)
+					let url = domin+"/api/api_gateway?method=camera.camera_manage.camera_takephoto"
+					if (videoType == 'dgp') {
+						url = domin+"/api/api_gateway?method=camera.camera_manage.multi_camera_takephoto"
+					}
 					$.ajax({
 						type: "POST",
-						url: "https://wx.hnyfwlw.com/api/api_gateway?method=camera.camera_manage.camera_takephoto",
+						url: url,
 						data: {
 							device_id: device_id,
 							token
 						}
 					}).then((res) => {
-						if (res.data.data) {
-							var data = JSON.parse(res.data.data);
-							var picUrl = data.data.picUrl;
+
+						if (res.message == '') {
+							$('#dialog').html('拍照成功').stop().show(500).delay(1000).hide(500)
 						} else {
-							console.log(res.data.message)
+							$('#dialog').html(res.message).stop().show(500).delay(1000).hide(500)
 						}
 					});
 				}
 
 			} else {
+				let url = domin+"/api/api_gateway?method=camera.camera_manage.ctrl_camera"
+				let postData = {
+					device_id: device_id,
+					token
+				}
+				if (videoType == 'dgp') {
+					url = domin+"/api/api_gateway?method=camera.camera_manage.multi_ctrl_camera"
+					postData.ctrl = movenum
+				} else {
+					postData.ctrl = ctrl
+					postData.movenum = movenum
+				}
 				//上下左右、放大、缩小
 				$.ajax({
 					type: "POST",
-					url: "https://wx.hnyfwlw.com/api/api_gateway?method=camera.camera_manage.ctrl_camera",
-					data: {
-						device_id: device_id,
-						ctrl: ctrl,
-						movenum: movenum,
-						token
-					}
+					url: url,
+					data: postData
 				}).then((res) => {
 					$('#dialog').html('指令下发成功,请等待...').stop().show(500).delay(3000).hide(500)
 				})
@@ -239,18 +365,33 @@
 
 		function stopConfigCamera() {
 			if (player) {
-				// 云联监控不需要这个指令
+				// 云联不需要停止
 				return
 			}
-			$.ajax({
-				type: "POST",
-				url: "https://wx.hnyfwlw.com/api/api_gateway?method=camera.camera_manage.ctrl_camera",
-				data: {
-					device_id: device_id,
-					ctrl: "stop",
-					token
-				},
-			});
+			if (videoType == 'dgp') {
+				if (stopTimer) clearTimeout(stopTimer)
+				stopTimer = setTimeout(() => {
+					$.ajax({
+						type: "POST",
+						url: domin+"/api/api_gateway?method=camera.camera_manage.mulit_stop_move",
+						data: {
+							device_id: device_id,
+							token
+						},
+					});
+				}, 3000)
+
+			} else {
+				$.ajax({
+					type: "POST",
+					url: domin+"/api/api_gateway?method=camera.camera_manage.ctrl_camera",
+					data: {
+						device_id: device_id,
+						ctrl: "stop",
+						token
+					},
+				});
+			}
 		}
 
 		function postPic(file) {
@@ -260,88 +401,99 @@
 			form.append('token', token)
 			$.ajax({
 				type: "POST",
-				url: "https://wx.hnyfwlw.com/api/api_gateway?method=camera.camera_manage.save_camera_photo",
-				contentType : false,
-				processData : false,
+				url: domin+"/api/api_gateway?method=camera.camera_manage.save_camera_photo",
+				contentType: false,
+				processData: false,
 				data: form
 			}).then((res) => {
-			
+
 				if (res.message == '') {
 					$('#dialog').html('拍照成功').stop().show(500).delay(1500).hide(500)
 				} else {
-					$('#dialog').html(res.data.message).stop().show(500).delay(1500).hide(500)
+					$('#dialog').html(res.message).stop().show(500).delay(1500).hide(500)
 				}
 			});
 
 		}
-		async function initYunlianPlayer(videoURL) {
-			var playHtml =
-				`<div id="yunlianPlayer" style="width: 100%;height: 300px;overflow: hidden;"></div>`;
-			$("#box").html(playHtml)
-			player = new Player(['yunlianPlayer'], {
-				playFileOver: () => {
-					console.log('播放结束')
-				},
-				playError: (id, e) => {
-					console.log('播放错误', id, e)
-				},
-				talkStart: () => {
-					console.log('对讲开始')
-				},
-				runtimeInitializedCallBack: () => {
-					console.log('播放器初始化完成')
-				},
-				captureCallback: (id, data) => {
-					// console.log('截图返回的数据', data.buffer)
-					const blob = new Blob([data], {
-						type: 'image/jpeg'
-					})
-					_postPic(blob)
-				}
-			})
-			await player.init()
-			setTimeout(() => {
-				player.play('yunlianPlayer', {
-					streamURL: videoURL,
 
-					channelId: '0',
-
-					bitStream: '0',
+		$('.videoBtnPlay').click(function() {
+			$('.videoBtnPlay').hide()
+			if (videoType == 'dgp') {
+				$.ajax({
+					type: "POST",
+					url: domin+"/api/api_gateway?method=camera.camera_manage.multi_addr_camera",
+					data: {
+						device_id: device_id,
+						token
+					}
+				}).then((res) => {
+					// console.log(JSON.stringify(res))
+					if (res.message == '') {
+						var data = null
+						if (typeof res.data == 'string') {
+							data = eval('(' + res.data + ')');
+						} else {
+							data = res.data;
+						}
+						console.log(data, 'data');
 
-					isLive: true
-				})
-			}, 1000)
-		}
+						let hlsHdSrc = data.rtmp;
+						var playHtml =
+							`<video id="myPlayer"   poster='' controls playsInline  webkit-playsinline src=${hlsHdSrc}  style="width:100%; height:100%;"></video>`;
+						$("#box").html(playHtml)
+						var myVideo = videojs(`myPlayer`, {
+							controls: true,
+							autoplay: 'play',
+							url: hlsHdSrc,
+							sources: [{
+								type: 'application/x-mpegURL',
+								src: hlsHdSrc,
+							}],
+						}, function onPlayerReady() {
+							myVideo.play()
+							console.log('准备好了')
+						});
+						myVideo.on('play', function() {
+							console.log('开始播放')
+						})
 
 
-		$('.videoBtnPlay').click(function() {
-			$('.videoBtnPlay').hide()
-			$.ajax({
-				type: "POST",
-				url: "https://wx.hnyfwlw.com/api/api_gateway?method=camera.camera_manage.addr_camera",
-				// url: "http://192.168.0.117:8003/api/api_gateway?method=camera.camera_manage.addr_camera",
-				data: {
-					device_id: device_id,
-					token
-					// device_id: 'FA8690323-1',
-					// token: localStorage.getItem('session_key')
-				}
-			}).then((res) => {
-				// console.log(JSON.stringify(res))
-				if (res.message == '') {
-					var data = null
-					if (typeof res.data == 'string') {
-						data = eval('(' + res.data + ')');
 					} else {
-						data = res.data;
+						alert(res.message)
 					}
-					console.log(data, 'data');
-					if (data.type_id == 2) {
-						// 大华云联
-						initYunlianPlayer(data.rtsp)
 
-					} else {
-						let hlsHdSrc = data.type_id == 0 ? data.hls : data.hlsHd;
+				})
+
+			} else {
+				$.ajax({
+					type: "POST",
+					url: domin+"/api/api_gateway?method=camera.camera_manage.addr_camera",
+					// url: "http://192.168.0.117:8003/api/api_gateway?method=camera.camera_manage.addr_camera",
+					data: {
+						device_id: device_id,
+						is_dahua_app:'1',
+						token
+						// device_id: 'FA8690323-1',
+						// token: localStorage.getItem('session_key')
+					}
+				}).then((res) => {
+					if (res.message == '') {
+						var data = null
+						if (typeof res.data == 'string') {
+							data = eval('(' + res.data + ')');
+						} else {
+							data = res.data;
+						}
+						var hlsHdSrc = ""
+						if (data.type_id == 2) {
+							// 大华云联
+							// initFlvPlayer(data.rtsp)
+				
+							player = 1
+							hlsHdSrc = data.rtsp;
+						} else {
+							hlsHdSrc = data.type_id == 0 ? data.hls : data.hlsHd;
+						}
 						var playHtml =
 							`<video id="myPlayer"   poster='' controls playsInline  webkit-playsinline src=${hlsHdSrc}  style="width:100%; height:100%;"></video>`;
 						$("#box").html(playHtml)
@@ -360,17 +512,18 @@
 						myVideo.on('play', function() {
 							console.log('开始播放')
 						})
+					} else {
+						alert(res.message)
 					}
 
-				} else {
-					alert(res.message)
-				}
+				})
 
-			})
+			}
 
 		})
 		document.addEventListener('UniAppJSBridgeReady', function() {
-			$('.imgBtn').click(function() {
+
+			$('.imgBtnCamrea').click(function() {
 				// if (player) {
 				// 	player.close('yunlianPlayer')
 				// 	player = null
@@ -380,6 +533,16 @@
 					url: '/pages/monitor/imagelist?id=' + device_id
 				})
 			})
+			$('.imgBtnDgp').click(function() {
+				// if (player) {
+				// 	player.close('yunlianPlayer')
+				// 	player = null
+				// }
+
+				uni.navigateTo({
+					url: '/pages/monitor/dgpImagelist?id=' + device_id
+				})
+			})
 		});
 	</script>
 </html>

Разлика између датотеке није приказан због своје велике величине
+ 11 - 0
static/jquery-3.5.1.min.js


Разлика између датотеке није приказан због своје велике величине
+ 11964 - 0
static/js/flv.min.js


Разлика између датотеке није приказан због своје велике величине
+ 1 - 0
static/jweixin-1.4.0.js


Разлика између датотеке није приказан због своје велике величине
+ 1 - 0
static/jweixin-1.6.0.js


Разлика између датотеке није приказан због своје велике величине
+ 1 - 0
static/uni.webview.1.5.2.js


Разлика између датотеке није приказан због своје велике величине
+ 8 - 0
static/uni.webview.1.5.6.js


Разлика између датотеке није приказан због своје велике величине
+ 25 - 0
static/video.min.js


Разлика између датотеке није приказан због своје велике величине
+ 0 - 1
static/videoPlayer/playerWasm/PlaySDKInterface.js


Разлика између датотеке није приказан због своје велике величине
+ 0 - 1023
static/videoPlayer/playerWasm/public.js


Разлика између датотеке није приказан због своје велике величине
+ 0 - 1147
static/videoPlayer/videoPlay-js.js


+ 1 - 0
util/api.js

@@ -10,6 +10,7 @@ export const myRequest = (options) => {
         : config.productAPI;
   }
   BASE_URL = config.productAPI;
+  BASE_URL = config.developAPI;
   // console.log(BASE_URL)
   var session_key = '';
   session_key = uni.getStorageSync('session_key');