Переглянути джерело

feat:色诱1.0修改控制

yf_elsa.cui 1 місяць тому
батько
коміт
271e5e70f7
54 змінених файлів з 4443 додано та 115 видалено
  1. 2 2
      manifest.json
  2. 7 0
      pages.json
  3. 8 6
      pages/cb/bzy/equip-set/bzyhistoryile.vue
  4. 77 15
      pages/cb/cbd/equip-set/equip-set-new.vue
  5. 617 0
      pages/cb/cbd/equip-set/equip-set-sy2.vue
  6. 1 1
      pages/cb/cbd/equip-set/photo.vue
  7. 5 4
      pages/cb/equip-detail/equip-detail-new.vue
  8. 15 14
      pages/monitor/imagelist.vue
  9. BIN
      static/360ARTagAsserts/Blue/Line_0.png
  10. BIN
      static/360ARTagAsserts/Blue/Line_1.png
  11. BIN
      static/360ARTagAsserts/Blue/TextLabel_0.png
  12. BIN
      static/360ARTagAsserts/Blue/TextLabel_1.png
  13. BIN
      static/360ARTagAsserts/Blue/gif/point_0.png
  14. BIN
      static/360ARTagAsserts/Blue/gif/point_1.png
  15. BIN
      static/360ARTagAsserts/Drops-1.png
  16. BIN
      static/360ARTagAsserts/Drops-2.png
  17. BIN
      static/360ARTagAsserts/Green/Line_0.png
  18. BIN
      static/360ARTagAsserts/Green/Line_1.png
  19. BIN
      static/360ARTagAsserts/Green/TextLabel_0.png
  20. BIN
      static/360ARTagAsserts/Green/TextLabel_1.png
  21. BIN
      static/360ARTagAsserts/Green/gif/point_0.png
  22. BIN
      static/360ARTagAsserts/Green/gif/point_1.png
  23. BIN
      static/360ARTagAsserts/glasses.png
  24. BIN
      static/360ARTagAsserts/loading.gif
  25. 21 0
      static/WasmLib/Common/libH264Enc.js
  26. BIN
      static/WasmLib/Common/libH264Enc.wasm
  27. 21 0
      static/WasmLib/Common/libIVSDrawer.js
  28. BIN
      static/WasmLib/Common/libIVSDrawer.wasm
  29. 21 0
      static/WasmLib/Common/libRenderEngine.js
  30. BIN
      static/WasmLib/Common/libRenderEngine.wasm
  31. 50 0
      static/WasmLib/Common/libmavasp_litepacket.data
  32. 21 0
      static/WasmLib/Common/libmavasp_litepacket.js
  33. BIN
      static/WasmLib/Common/libmavasp_litepacket.wasm
  34. 21 0
      static/WasmLib/MultiThread/libStreamClient.js
  35. BIN
      static/WasmLib/MultiThread/libStreamClient.wasm
  36. 1 0
      static/WasmLib/MultiThread/libStreamClient.worker.js
  37. BIN
      static/WasmLib/MultiThread/libplay.data
  38. 1 0
      static/WasmLib/MultiThread/libplay.js
  39. BIN
      static/WasmLib/MultiThread/libplay.wasm
  40. 1 0
      static/WasmLib/MultiThread/libplay.worker.js
  41. 1094 0
      static/WasmLib/SingleThread/VideoDecodeWorker.js
  42. 21 0
      static/WasmLib/SingleThread/libIVSDrawer.js
  43. BIN
      static/WasmLib/SingleThread/libIVSDrawer.wasm
  44. 21 0
      static/WasmLib/SingleThread/libRenderEngine.js
  45. BIN
      static/WasmLib/SingleThread/libRenderEngine.wasm
  46. 21 0
      static/WasmLib/SingleThread/libStreamClient.js
  47. BIN
      static/WasmLib/SingleThread/libStreamClient.wasm
  48. 1 0
      static/WasmLib/SingleThread/libplay.js
  49. BIN
      static/WasmLib/SingleThread/libplay.wasm
  50. 29 0
      static/WasmLib/SingleThread/libplayAPI.js
  51. 195 73
      static/h52.html
  52. 1 0
      static/videoPlayer/playerWasm/PlaySDKInterface.js
  53. 1023 0
      static/videoPlayer/playerWasm/public.js
  54. 1147 0
      static/videoPlayer/videoPlay-js.js

+ 2 - 2
manifest.json

@@ -2,8 +2,8 @@
     "name" : "智控",
     "appid" : "__UNI__DBA6730",
     "description" : "",
-    "versionName" : "1.14.9",
-    "versionCode" : 1149,
+    "versionName" : "1.14.10",
+    "versionCode" : 11410,
     "transformPx" : false,
     "sassImplementationName" : "node-sass",
     /* 5+App特有相关 */

+ 7 - 0
pages.json

@@ -338,6 +338,13 @@
         "enablePullDownRefresh": false
       }
     },
+	{
+	  "path": "pages/cb/cbd/equip-set/equip-set-sy2",
+	  "style": {
+	    "navigationBarTitleText": "设备控制",
+	    "enablePullDownRefresh": false
+	  }
+	},
     {
       "path": "pages/cb/cbd/equip-set/photo",
       "style": {

+ 8 - 6
pages/cb/bzy/equip-set/bzyhistoryile.vue

@@ -40,7 +40,7 @@
 							<td class="td" v-if="isShowBwc">{{items.d_h_t.set_temp}}</td>
 							<td class="td" v-if="isShowBwc">{{items.d_h_t.pre_temp}}</td>
 							<td class="td">{{items.d_h_t.batStatus==0?"正常":"欠压"}}</td>
-							<td class="td">{{items.d_h_t.rps==0?"正常":"雨控"}}</td>
+							<!-- <td class="td">{{items.d_h_t.rps==0?"正常":"雨控"}}</td> -->
 							<td class="td">{{Circulation.work_sta.value[items.d_h_t.work_sta]}}</td>
 							<td class="td">{{items.d_h_t.csq}}</td>
 							<td class="td">{{items.d_h_t.current}}</td>
@@ -48,7 +48,8 @@
 							<td class="td">{{items.d_h_t.dver}}</td>
 						</tr>
 						<tr class="tr" v-if="forbidden">
-							<td class="td" v-for="item in 13" :key="item">暂无数据</td>
+							
+							<td class="td" v-for="(item,index) in thdata" :key="index" v-if="(!isShowBwc && item.indexOf('保温仓') < 0) || isShowBwc">暂无数据</td>
 						</tr>
 					</table>
 					<table class="table" v-else>
@@ -63,12 +64,13 @@
 							<td class="td" v-if="isShowBwc">{{items.d_h_t.set_temp}}</td>
 							<td class="td" v-if="isShowBwc">{{items.d_h_t.pre_temp}}</td>
 							<td class="td">{{items.d_h_t.batStatus==0?"正常":"欠压"}}</td>
-							<td class="td">{{items.d_h_t.rps==0?"正常":"雨控"}}</td>
+							<!-- <td class="td">{{items.d_h_t.rps==0?"正常":"雨控"}}</td> -->
 							<td class="td">{{Circulation.work_sta.value[items.d_h_t.work_sta]}}</td>
 							<td class="td">{{items.d_h_t.dver}}</td>
 						</tr>
 						<tr class="tr" v-if="forbidden">
-							<td class="td" v-for="item in 10" :key="item">暂无数据</td>
+							
+							<td class="td" v-for="(item,index) in thdata2" :key="index" v-if="(!isShowBwc && item.indexOf('保温仓') < 0) || isShowBwc">暂无数据</td>
 						</tr>
 					</table>
 				</scroll-view>
@@ -109,10 +111,10 @@
 				page: 1,
 				pagesum: 1,
 				historylistdata: [],
-				thdata: ["上报时间", "设备开关", "环境温度(°C)", "环境湿度(%)", "保温仓设定温度(°C)", "保温仓当前温度(°C)", "电池状态", "雨控状态", "工作状态",
+				thdata: ["上报时间", "设备开关", "环境温度(°C)", "环境湿度(%)", "保温仓设定温度(°C)", "保温仓当前温度(°C)", "电池状态", "工作状态",
 					"信号强度", "电流(mA)", "电压(V)", "设备版本"
 				],
-				thdata2: ["上报时间", "设备开关", "环境温度(°C)", "环境湿度(%)", "保温仓设定温度(°C)", "保温仓当前温度(°C)", "电池状态", "雨控状态", "工作状态",
+				thdata2: ["上报时间", "设备开关", "环境温度(°C)", "环境湿度(%)", "保温仓设定温度(°C)", "保温仓当前温度(°C)", "电池状态", "工作状态",
 					"设备版本"
 				],
 				forbidden: false,

+ 77 - 15
pages/cb/cbd/equip-set/equip-set-new.vue

@@ -25,7 +25,17 @@
 		<view style="margin:40rpx 0 20rpx 0;">
 			<u-line color="#E5EBE9" />
 		</view>
-
+<!-- 		<view class="">
+			<view class="tit">
+				IMEI:{{equipContrlForm.imei}}
+			</view>
+			<view class="tit">
+				设备ID:{{device_id}}
+			</view>
+			<view class="tit">
+				设备版本:{{equipContrlForm.version}}
+			</view>
+		</view> -->
 		<view class="uni-list-cell" v-if="device_type==32" @click="modeShow = true">
 			<span class="tit">定时模式</span>
 			<view class="right-data" style="float: right;">
@@ -33,14 +43,14 @@
 				<u-icon class="arrow" name="arrow-right"></u-icon>
 			</view>
 		</view>
-		<view class="uni-list-cell" v-if="device_type==33||device_type==34" @click="syModeShow = true">
+<!-- 		<view class="uni-list-cell" v-if="device_type==33||device_type==34" @click="syModeShow = true">
 			<span class="tit">控制模式</span>
 			<view class="right-data" style="float: right;">
 				<span>{{tsArrLabel}}</span>
 				<u-icon class="arrow" name="arrow-right"></u-icon>
 			</view>
-		</view>
-		<view class="uni-list-cell" @click="shikongshow = true" v-if="equipContrlForm.CONTROL==0">
+		</view> -->
+<!-- 		<view class="uni-list-cell" @click="shikongshow = true" v-if="equipContrlForm.CONTROL==0">
 			<span class="tit">
 				时控时长
 			</span>
@@ -49,8 +59,8 @@
 				<u-icon class="arrow" name="arrow-right"></u-icon>
 			</view>
 			
-		</view>
-		<view class="uni-list-cell" @click="gkongShow = true" v-if="equipContrlForm.CONTROL==1">
+		</view> -->
+<!-- 		<view class="uni-list-cell" @click="gkongShow = true" v-if="equipContrlForm.CONTROL==1">
 			<span class="tit">
 				光控时长
 			</span>
@@ -59,24 +69,24 @@
 				<u-icon class="arrow" name="arrow-right"></u-icon>
 			</view>
 			
-		</view>
+		</view> -->
 		
-		<view class="uni-list-cell" @click="photoShow = true" v-if="device_type==33||device_type==34">
+		<view class="uni-list-cell" @click="shikongshow = true" v-if="device_type==33||device_type==34">
 			<span class="tit">
 				拍照时间
 			</span>
 			<view class="right-data" style="float: right;">
-				<span>{{photoLabel}}</span>
+				<span>{{shikongLabel}}</span>
 				<u-icon class="arrow" name="arrow-right"></u-icon>
 			</view>
 			
 		</view>
-		<view class="uni-list-cell" v-if="device_type==33||device_type==34"  @click="selectOperate(5,1440,'P_DATT')">
+		<view class="uni-list-cell" v-if="device_type==33||device_type==34"  @click="selectOperate(5,1440,'PHO_T')">
 			<span class="tit">
 				拍照频率(min)
 			</span>
 			<view class="right-data" style="float: right;">
-				<span>{{equipContrlForm.P_DATT}}</span>
+				<span>{{equipContrlForm.PHO_T}}</span>
 				<u-icon class="arrow" name="arrow-right"></u-icon>
 			</view>
 			
@@ -101,6 +111,38 @@
 			</view>
 			
 		</view>
+		<view class="uni-list-cell" v-if="device_type==34"  >
+			<span class="tit">
+				是否温控
+			</span>
+			<view class="right-data" style="width:50px;height: 100%; float: right;display: flex;align-items: center;">
+				<u-switch style="margin-top: 5px;" color="#57C878" v-model="equipContrlForm.TEMP_LIMIT" size="40"></u-switch>
+				<!-- <u-icon class="arrow" name="arrow-right"></u-icon> -->
+			</view>
+			
+		</view>
+		<view class="uni-list-cell" v-if="device_type==34 && equipContrlForm.TEMP_LIMIT" >
+			<span class="tit">
+				低温设置
+			</span>
+			<view class="right-data" style="float: right;width: 70%;">
+				<slider style="margin: 0;" :block-size='20' :value="equipContrlForm.TEMP_DOWN" show-value="true" :min="0" :max="20" @change="sliderChange($event,'down')"  block-color="#57C878" activeColor="#57C878" step="1" />
+		
+				
+			</view>
+			
+		</view>
+		<view class="uni-list-cell" v-if="device_type==34 && equipContrlForm.TEMP_LIMIT"  >
+			<span class="tit">
+				高温设置
+			</span>
+			<view class="right-data" style="float: right;width: 70%;">
+				<slider style="margin: 0;" :block-size='20' :value="equipContrlForm.TEMP_UP" show-value="true" :min="50" :max="80" @change="sliderChange($event,'up')"  block-color="#57C878" activeColor="#57C878" step="1" />
+				
+				<!-- <u-icon class="arrow" name="arrow-right"></u-icon> -->
+			</view>
+			
+		</view>
 		<view >
 			<u-select v-model="modeShow" :list="tsArr" @confirm="tsArrConfirm"></u-select>
 			<u-select v-model="syModeShow" :list="syArr" @confirm="tsArrConfirm"></u-select>
@@ -168,14 +210,17 @@
 				wsModelShow: false,
 				equipContrlForm: {
 					END_TIME: '',
-					CONTROL: 0,
+					// CONTROL: 0,
 					DATT: 5,
 					START_TIME: '',
 					PHO_T: 5,
 					P_DATT:1,
 					TT: '',
 					P_START:'',
-					P_END:''
+					P_END:'',
+					TEMP_LIMIT:false,
+					TEMP_UP: 50,
+					TEMP_DOWN: 0
 				},
 
 				shikongLabel:'00:00-00:00',
@@ -402,6 +447,18 @@
 			})
 		},
 		methods: {
+			sliderChange(e,a){
+				let val=e.detail.value
+				switch(a){
+					case 'up':
+						this.equipContrlForm.TEMP_UP=val;
+						break;
+					case 'down':
+						this.equipContrlForm.TEMP_DOWN=val;
+						break;
+
+				}
+			},
 			selectOperate(min,max,formKey){
 				this.dataSelectShow = true
 		
@@ -417,7 +474,7 @@
 			},
 			tsArrConfirm(e){
 				this.tsArrLabel = e[0].label
-				this.equipContrlForm.CONTROL = e[0].value
+				// this.equipContrlForm.CONTROL = e[0].value
 			},
 			gkArrConfirm(e){
 				this.gkongLabel = e[0].label
@@ -459,12 +516,17 @@
 					return 
 				}
 				this.equipContrlForm = res
+		
+				this.equipContrlForm.TEMP_LIMIT = res.TEMP_LIMIT=='1'
+				this.equipContrlForm.TEMP_UP = (res.TEMP_UP||50)-0
+				this.equipContrlForm.TEMP_DOWN = (res.TEMP_DOWN||0)-0
 				this.photoLabel = (res.P_START||'00:00')+' - '+ (res.P_END||'00:00')
 				this.shikongLabel = res.START_TIME + ':00' +  ' - '+res.END_TIME + ':00' 
-				console.log(this.equipContrlForm)
+				console.log(this.equipContrlForm,'0000')
 			},
 			async submit() {
 				console.log(this.equipContrlForm)
+				this.equipContrlForm.TEMP_LIMIT = this.equipContrlForm.TEMP_LIMIT ? '1':'0'
 				let res = await this.$myRequest({
 					url: '/api/api_gateway?method=new_gateway.device_info.update_device_config',
 					data: {

+ 617 - 0
pages/cb/cbd/equip-set/equip-set-sy2.vue

@@ -0,0 +1,617 @@
+<template>
+	<view style="padding: 0 24rpx;">
+		<view class="" v-if="myuser_type">
+			<view class="tit adminTit">
+				联网模块
+			</view>
+			<view class="btns">
+				<button v-for="(item,index) in controlInfo.netControl" type="warn" @click="equipBtnControl(item.cmd)" size="mini">{{item.name}}</button>
+			</view>
+			<view class="tit adminTit" v-if="controlInfo.forceControl.length>0">
+				强制操作
+			</view>
+			<view class="btns">
+				<button v-for="(item,index) in controlInfo.forceControl" type="warn" @click="equipBtnControl(item.cmd)" size="mini">{{item.name}}</button>
+		
+			</view>
+			<view class="tit adminTit">
+				设备操作
+			</view>
+			<view class="btns">
+				<button v-for="(item,index) in controlInfo.equipControl" type="warn" @click="equipBtnControl(item.cmd)" size="mini">{{item.name}}</button>
+
+			</view>
+		</view>
+		<view style="margin:40rpx 0 20rpx 0;">
+			<u-line color="#E5EBE9" />
+		</view>
+		<view class="">
+			<view class="tit">
+				IMEI:{{equipContrlForm.imei}}
+			</view>
+			<view class="tit">
+				设备ID:{{device_id}}
+			</view>
+			<view class="tit">
+				设备版本:{{equipContrlForm.version}}
+			</view>
+		</view>
+		<view class="uni-list-cell" v-if="device_type==32" @click="modeShow = true">
+			<span class="tit">定时模式</span>
+			<view class="right-data" style="float: right;">
+				<span>{{tsArrLabel}}</span>
+				<u-icon class="arrow" name="arrow-right"></u-icon>
+			</view>
+		</view>
+		<view class="uni-list-cell" v-if="device_type==33||device_type==34" @click="syModeShow = true">
+			<span class="tit">控制模式</span>
+			<view class="right-data" style="float: right;">
+				<span>{{tsArrLabel}}</span>
+				<u-icon class="arrow" name="arrow-right"></u-icon>
+			</view>
+		</view>
+		<view class="uni-list-cell" @click="shikongshow = true" v-if="equipContrlForm.ctrlMode=='0'">
+			<span class="tit">
+				时控时长
+			</span>
+			<view class="right-data" style="float: right;">
+				<span>{{shikongLabel}}</span>
+				<u-icon class="arrow" name="arrow-right"></u-icon>
+			</view>
+			
+		</view>
+		<view class="uni-list-cell" @click="gkongShow = true" v-if="equipContrlForm.ctrlMode=='1'">
+			<span class="tit">
+				光控时长
+			</span>
+			<view class="right-data" style="float: right;">
+				<span>{{gkongLabel}}</span>
+				<u-icon class="arrow" name="arrow-right"></u-icon>
+			</view>
+			
+		</view>
+
+
+
+		<view  class="uni-list-cell" @click="selectOperate(5,180,'takePhotoIntervalMinutes')">
+			<span class="tit">
+				拍照频率(min)
+			</span>
+			<view class="right-data" style="float: right;">
+				<span>{{equipContrlForm.takePhotoIntervalMinutes}}</span>
+				<u-icon class="arrow" name="arrow-right"></u-icon>
+			</view>
+			
+		</view>
+		<view >
+			<u-select v-model="modeShow" :list="tsArr" @confirm="tsArrConfirm"></u-select>
+			<u-select v-model="syModeShow" :list="syArr" @confirm="tsArrConfirm"></u-select>
+			<u-select v-model="shikongshow" mode="mutil-column" :list="shikonglist" @confirm="shikongconfirm"></u-select>
+			<u-select v-model="photoShow" mode="mutil-column" :list="shikonglist" @confirm="photoConfirm"></u-select>
+			<u-select v-model="gkongShow" :list="gkongArr" @confirm="gkArrConfirm"></u-select>
+			<u-select v-model="dataSelectShow"  :list="singleSelectList" @confirm="dataconfirm"></u-select>
+		</view>
+		<view class="submit-box">
+			<u-button :custom-style="customStyle" @click="submit" :disabled="submitBtnDisabled" >确定</u-button>
+		</view>
+		<u-toast ref="toast" />
+		<u-popup v-model="mqttShow">
+			<view class="mqtt-popup">
+				<u-field required v-model="mqttConfig.muid" label="MQTT用户名" label-width="180">
+				</u-field>
+				<u-field required v-model="mqttConfig.mpwd" label="MQTT密码" label-width="180">
+				</u-field>
+				<u-field required v-model="mqttConfig.mpi" label="MQTT地址" label-width="180">
+				</u-field>
+				<u-field required v-model="mqttConfig.mport" label="MQTT端口" label-width="180">
+				</u-field>
+				<u-field required v-model="mqttConfig.mpub" label="上传地址" label-width="180">
+				</u-field>
+				<u-field required v-model="mqttConfig.msub" label="下发地址" label-width="180">
+				</u-field>
+				<u-field v-model="mqttConfig.fuid" label="FTP用户名" label-width="180">
+				</u-field>
+				<u-field v-model="mqttConfig.fpwd" label="FTP密码" label-width="180">
+				</u-field>
+				<u-field required v-model="mqttConfig.fip" label="图片上传地址" label-width="180">
+				</u-field>
+				<u-field required v-model="mqttConfig.fport" label="图片上传接口" label-width="180">
+				</u-field>
+			</view>
+			<view class="mqtt-btn-box">
+				<u-button @click="" size="medium" type="success">确定</u-button>
+			</view>
+		</u-popup>
+	</view>
+</template>
+
+<script>
+	export default {
+		data() {
+			return {
+				d_id: '',
+				device_id:'',
+				device_type:'',
+				dsArr: ['关机', '开机'],
+				dsIndex: 0,
+				wsArr: ['待机', '工作'],
+				wsIndex: 0,
+				tsArr: [ 
+					{ value: 1, label: '时控触发' },
+					{ value: 0, label: '时控模式' },
+				],
+				syArr:[
+					{ value: 1, label: '光控模式' },
+					{ value: 0, label: '时控模式' }
+				  ],
+				tsIndex: 0,
+				imgresArr: ['高', '中', '低'],
+				imgresIndex: "",
+				wsModelShow: false,
+				equipContrlForm: {
+					endHour: '',
+					ctrlMode: '0',
+				
+					startHour: '',
+					takePhotoIntervalMinutes: 5,
+					lightDuration:''
+				},
+
+				shikongLabel:'00:00-00:00',
+				list: [{
+						value: '00:00',
+						label: '00:00'
+					},
+					{
+						value: '01:00',
+						label: '01:00'
+					},
+					{
+						value: '02:00',
+						label: '02:00'
+					},
+					{
+						value: '03:00',
+						label: '03:00'
+					},
+					{
+						value: '04:00',
+						label: '04:00'
+					},
+					{
+						value: '05:00',
+						label: '05:00'
+					},
+					{
+						value: '06:00',
+						label: '06:00'
+					},
+					{
+						value: '07:00',
+						label: '07:00'
+					}, {
+						value: '08:00',
+						label: '08:00'
+					},
+					{
+						value: '09:00',
+						label: '09:00'
+					},
+					{
+						value: '10:00',
+						label: '10:00'
+					},
+					{
+						value: '11:00',
+						label: '11:00'
+					},
+					{
+						value:'12:00',
+						label: '12:00'
+					},
+					{
+						value: '13:00',
+						label: '13:00'
+					},
+					{
+						value: '14:00',
+						label: '14:00'
+					}, {
+						value: '15:00',
+						label: '15:00'
+					},
+					{
+						value: '16:00',
+						label: '16:00'
+					},
+					{
+						value: '17:00',
+						label: '17:00'
+					},
+					{
+						value: '18:00',
+						label: '18:00'
+					},
+					{
+						value: '19:00',
+						label: '19:00'
+					},
+					{
+						value: '20:00',
+						label: '20:00'
+					},
+					{
+						value: '21:00',
+						label: '21:00'
+					}, {
+						value: '22:00',
+						label: '22:00'
+					},
+					{
+						value: '23:00',
+						label: '23:00'
+					},
+				],
+				mqttShow: false,
+				shikongshow:false,
+				gkongLabel:'0h',
+				gkongShow:false,
+				mqttConfig: {
+					muid: '',
+					mpwd: '',
+					mip: '',
+					mport: '',
+					mpub: '',
+					msub: '',
+					fuid: '',
+					fpwd: '',
+					fip: '',
+					fport: ''
+				},
+				myuser_type: false,
+				singleSelectList:[],
+				dataSelectShow:false,
+				currentFormKey:'',
+				tsArrLabel:'时控模式',
+			
+				modeShow:false,
+				syModeShow:false,
+				submitBtnDisabled:false,
+				photoShow:false,
+				photoLabel:'00:00-00:00'
+				
+			}
+		},
+		
+		computed:{
+			gkongArr(){
+				const list = []
+				      const count = 24
+				      for (let i = 0; i < count; i++) {
+				        list.push({
+				          value: i + 1 + '',
+				          label: i + 1 + 'h'
+				        })
+				      }
+				      return list
+			},
+			customStyle(){
+				return {
+					background: '#14A478',
+					borderRadius:'90rpx',
+					border:'none',
+					color:'#fff'
+				}
+			},
+			shikonglist(){
+				return[
+					[...this.list],
+					[...this.list]
+				] 
+			},
+
+			controlInfo(){
+				const netControl = [{
+          name: '数据单元重启',
+          cmd: 'reboot'
+        },
+        {
+          name: '数据单元升级',
+          cmd: 'upgradeApp'
+        }]
+				const forceControl = [
+				 //  {
+					// name: '控制单元重启',
+					// cmd: 'reboot'
+				 //  },
+				 //  {
+					// name: '控制单元升级',
+					// cmd: 'update'
+				 //  }
+				]
+				const equipControl = [
+				 {
+				           name: '测试拍照',
+				           cmd: 'takephoto'
+				         },
+				         {
+				           name: '获取定位',
+				           cmd: 'getLocation'
+				         }
+				]
+			
+				switch (this.device_type){
+					case 32://天牛
+						break;
+					case 33:
+						break;
+					case 34:
+						break;
+					case 35:
+					break;
+					default:
+						break;
+				}
+				return {
+					netControl,forceControl,equipControl
+					
+				}
+			}
+		},
+		onLoad(option) {
+			this.d_id = option.d_id
+			this.device_id = option.device_id
+			this.device_type = option.device_type
+			this.getInfo()
+			uni.getStorage({
+				key: "myuser_type",
+				success: (res) => {
+					if (Number(res.data) == 1) {
+						this.myuser_type = true
+					}
+				}
+			})
+		},
+		methods: {
+			selectOperate(min,max,formKey){
+				this.dataSelectShow = true
+		
+				this.singleSelectList = []
+				for (let i = min; i < max; i+=5) {
+					this.singleSelectList.push({
+						value:i,
+						label:i.toString()
+					})
+				}
+				console.log(this.singleSelectList,'--')
+				this.currentFormKey = formKey
+			},
+			tsArrConfirm(e){
+				this.tsArrLabel = e[0].label
+				this.equipContrlForm.ctrlMode = e[0].value
+			},
+			gkArrConfirm(e){
+				this.gkongLabel = e[0].label
+				this.equipContrlForm.lightDuration = e[0].value
+			},
+			dataconfirm(e){
+				this.equipContrlForm[this.currentFormKey] = e[0].value
+			},
+			shikongconfirm(e){
+				console.log(e)
+				this.shikongLabel = e[0].label+'-'+e[1].label
+				this.equipContrlForm.startHour = e[0].value
+				this.equipContrlForm.endHour = e[1].value
+			},
+			photoConfirm(e){
+				
+				this.photoLabel = e[0].label+'-'+e[1].label
+				this.equipContrlForm.P_START = e[0].value
+				this.equipContrlForm.P_END = e[1].value
+			},
+			turnChange(e, a) {
+				this.equipContrlForm.ts = e.target.value
+
+			},	
+			async getInfo() {
+				let res = await this.$myRequest({
+					url: '/api/api_gateway?method=new_gateway.device_info.get_device_config',
+					data: {
+						device_type_id:this.device_type,
+						id: this.d_id
+					}
+				})
+				if(res.code==4000){
+					this.submitBtnDisabled = true
+					this.$refs.toast.show({
+						title: res.msg,
+						type: 'warning'
+					})
+					return 
+				}
+				this.equipContrlForm = res
+				this.tsArrLabel = res.ctrlMode=='1' ? '光控模式':'时控模式'
+				this.gkongLabel = res.lightDuration + 'h'
+				this.shikongLabel = res.startHour + ':00' +  ' - '+res.endHour + ':00' 
+				console.log(this.equipContrlForm)
+			},
+			async submit() {
+				console.log(this.equipContrlForm)
+				let res = await this.$myRequest({
+					url: '/api/api_gateway?method=new_gateway.device_info.update_device_config',
+					data: {
+						device_type_id: this.device_type,
+						id: this.d_id,
+						...this.equipContrlForm
+					}
+				})
+				console.log('响应',res)
+				if(res){
+					this.$refs.toast.show({
+						title: '设备控制指令下发成功!',
+						type: 'success',
+					})
+				}
+				if(res.code==4000){
+					this.$refs.toast.show({
+						title: res.msg+'无法修改',
+						type: 'warning'
+					})
+					
+				}
+			},
+			async equipBtnControl(cmd) {
+				let res = await this.$myRequest({
+					url: '/api/api_gateway?method=forecast.send_control.admin_device_control',
+					data: {
+						cmd,
+						device_type_id: this.device_type,
+						d_id: this.d_id
+					}
+				})
+				console.log(res,'响应----')
+				if (res) {
+					
+					this.$refs.toast.show({
+						title: '指令下发成功!',
+						type: 'success',
+					})
+				}
+			},
+			async mqttInfo() {
+				let res = await this.$myRequest({
+					url: '/api/api_gateway?method=forecast.send_control.device_control_info',
+					data: {
+						cmd: 'netconf',
+						d_id: this.d_id
+					}
+				})
+				if (res) {
+					let {
+						ftp,
+						mqtt
+					} = res
+					this.mqttConfig = {
+						muid: mqtt.uid,
+						mpwd: mqtt.pwd,
+						mip: mqtt.ip,
+						mport: mqtt.port,
+						mpub: mqtt.pub,
+						msub: mqtt.sub,
+						fuid: ftp.uid,
+						fpwd: ftp.pwd,
+						fip: ftp.ip,
+						fport: ftp.port
+					}
+				}
+				this.mqttShow = true
+			},
+			async mqttSubm() {
+				let obj = {
+					mqtt: {
+						uid: this.mqttConfig.muid,
+						pwd: this.mqttConfig.mpwd,
+						ip: this.mqttConfig.mip,
+						port: this.mqttConfig.mport,
+						pub: this.mqttConfig.mpub,
+						sub: this.mqttConfig.msub,
+						keepalive: 60,
+						lastwill: '/yfkj/cbd/offline/'
+					},
+					ftp: {
+						uid: this.mqttConfig.fuid,
+						pwd: this.mqttConfig.fpwd,
+						ip: this.mqttConfig.fip,
+						port: this.mqttConfig.fport
+					}
+				}
+				let res = await this.$myRequest({
+					url: '/api/api_gateway?method=forecast.send_control.device_control',
+					data: {
+						device_type_id: 3,
+						d_id: this.d_id,
+						cmd: 'setnet',
+						config: JSON.stringify(obj)
+					}
+				})
+			}
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+	page {
+		padding: 20rpx;
+		box-sizing: border-box;
+
+		.tit {
+			line-height: 30rpx;
+			font-size: 28rpx;
+			margin: 30rpx 0;
+			color: #666666;
+		}
+
+		.adminTit {
+			border-left-color: #e64340;
+		}
+
+		.btns {
+			display: flex;
+			justify-content: flex-start;
+			flex-wrap: wrap;
+			gap: 16rpx;
+			button {
+				margin: 0;
+				margin-right: 10rpx;
+				padding: 0 25rpx;
+			}
+		}
+
+		.uni-list-cell {
+			// background: #F7F8FA;
+			// padding: 10rpx 40rpx;
+			height: 80rpx;
+			line-height: 80rpx;
+			font-size: 28rpx;
+			box-sizing: border-box;
+			.arrow{
+				margin-left: 30rpx;
+			}
+			.right-data{
+				color: #CCCCCC;
+			}
+		}
+
+		.selectTime {
+			display: flex;
+			float: right;
+			width: 30%;
+			color: #CCCCCC;
+			justify-content: space-between;
+			.time {
+				// width: 350rpx;
+				// display: flex;
+				// justify-content: space-between;
+			}
+
+			.line {
+				width: 50rpx;
+				text-align: center;
+			}
+		}
+
+		.submit-box {
+			margin-top: 60rpx
+		}
+
+		.mqtt-popup {
+			width: 580rpx;
+
+		}
+
+		.mqtt-btn-box {
+			margin-top: 50rpx;
+			text-align: center;
+		}
+	}
+</style>

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

@@ -231,7 +231,7 @@ export default {
         data: {
           device_type_id: this.device_type,
           id: this.device_id,
-          cmd: '0004',
+          COMMAND:this.device_type=='33'?'takephoto': '0004',
         },
       });
       console.log(res);

+ 5 - 4
pages/cb/equip-detail/equip-detail-new.vue

@@ -52,10 +52,11 @@
         v-if="equipInfo.type == 34"
         @click="operate('jd')"
       >
-        <span class="float-left">卷带到期时间</span>
+        <span class="float-left">卷带更换</span>
         <span> </span>
         <span class="float-right">
-          <span v-if="equipInfo.jd_expire_time > 0">
+			<span>{{equipInfo.remain||0}}%</span>
+         <!-- <span v-if="equipInfo.jd_expire_time > 0">
             {{ equipInfo.jd_expire_time | timeFormat }}
           </span>
           <span v-else> 暂未设置卷带 </span>
@@ -64,7 +65,7 @@
             name="arrow-right"
             color="#666666"
             size="26"
-          ></u-icon>
+          ></u-icon> -->
         </span>
       </view>
       <view
@@ -198,7 +199,7 @@ export default {
         {
           icon: '/image/cb/4.png',
           tex: '设备控制',
-          path: '/pages/cb/cbd/equip-set/equip-set-new',
+          path: this.type==33?'/pages/cb/cbd/equip-set/equip-set-sy2': '/pages/cb/cbd/equip-set/equip-set-new',
           tf: true,
         },
         {

+ 15 - 14
pages/monitor/imagelist.vue

@@ -1,7 +1,7 @@
 <template>
   <view>
     <!-- <view class="status_bar"></view> -->
-    <view class="" style="position: relative; top: 44px">
+    <view class="" style="position: relative; top: 5px">
       <!-- <view style="position: fixed;z-index: 100;">
 				<uni-nav-bar @clickLeft="clickLeft" left-icon="back" title="查看图片"></uni-nav-bar>
 			</view> -->
@@ -45,7 +45,7 @@
           </view>
           <view class="imglist_right">
             <view class="icon_box" @click="delimg(item.photo_id)">
-              <p class="iconfont icon-shanchu">删除</p>
+              <p class="yficonfont icon-shanchu">删除</p>
             </view>
             <p style="color: #06b535">{{ item.addtime | timeFormat() }}</p>
           </view>
@@ -251,16 +251,16 @@ export default {
 
 .selecttimes {
   width: 100%;
-  position: fixed;
-  top: 0;
-  left: 0;
+  // position: fixed;
+  // top: 0;
+  // left: 0;
   z-index: 100;
   background-color: #fff;
-  padding-top: 30rpx;
-
+  padding: 10rpx 20rpx;
+ box-sizing: border-box;
   .timesbox {
     display: flex;
-    width: 95%;
+    width:100%;
     margin: 0 auto;
     justify-content: space-around;
     box-shadow: 0 0 10rpx #bcb9ca;
@@ -340,11 +340,12 @@ export default {
 }
 
 .imglist {
-  position: absolute;
-  top: 0;
-  width: 95%;
-  left: 2.5%;
-
+  // position: absolute;
+  // top: 0;
+  // width: 95%;
+  // left: 2.5%;
+	padding: 0 20rpx;
+	margin-top: 10rpx;
   .imglist_box {
     display: flex;
     box-shadow: 0 0 10rpx #bcb9ca;
@@ -362,7 +363,7 @@ export default {
       top: 0;
       left: 0;
       width: 100%;
-      height: 280rpx;
+      height: 100%;
     }
   }
 

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


Різницю між файлами не показано, бо вона завелика
+ 21 - 0
static/WasmLib/Common/libH264Enc.js


BIN
static/WasmLib/Common/libH264Enc.wasm


Різницю між файлами не показано, бо вона завелика
+ 21 - 0
static/WasmLib/Common/libIVSDrawer.js


BIN
static/WasmLib/Common/libIVSDrawer.wasm


Різницю між файлами не показано, бо вона завелика
+ 21 - 0
static/WasmLib/Common/libRenderEngine.js


BIN
static/WasmLib/Common/libRenderEngine.wasm


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

@@ -0,0 +1,50 @@
+[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

Різницю між файлами не показано, бо вона завелика
+ 21 - 0
static/WasmLib/Common/libmavasp_litepacket.js


BIN
static/WasmLib/Common/libmavasp_litepacket.wasm


Різницю між файлами не показано, бо вона завелика
+ 21 - 0
static/WasmLib/MultiThread/libStreamClient.js


BIN
static/WasmLib/MultiThread/libStreamClient.wasm


Різницю між файлами не показано, бо вона завелика
+ 1 - 0
static/WasmLib/MultiThread/libStreamClient.worker.js


BIN
static/WasmLib/MultiThread/libplay.data


Різницю між файлами не показано, бо вона завелика
+ 1 - 0
static/WasmLib/MultiThread/libplay.js


BIN
static/WasmLib/MultiThread/libplay.wasm


Різницю між файлами не показано, бо вона завелика
+ 1 - 0
static/WasmLib/MultiThread/libplay.worker.js


Різницю між файлами не показано, бо вона завелика
+ 1094 - 0
static/WasmLib/SingleThread/VideoDecodeWorker.js


Різницю між файлами не показано, бо вона завелика
+ 21 - 0
static/WasmLib/SingleThread/libIVSDrawer.js


BIN
static/WasmLib/SingleThread/libIVSDrawer.wasm


Різницю між файлами не показано, бо вона завелика
+ 21 - 0
static/WasmLib/SingleThread/libRenderEngine.js


BIN
static/WasmLib/SingleThread/libRenderEngine.wasm


Різницю між файлами не показано, бо вона завелика
+ 21 - 0
static/WasmLib/SingleThread/libStreamClient.js


BIN
static/WasmLib/SingleThread/libStreamClient.wasm


Різницю між файлами не показано, бо вона завелика
+ 1 - 0
static/WasmLib/SingleThread/libplay.js


BIN
static/WasmLib/SingleThread/libplay.wasm


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

@@ -0,0 +1,29 @@
+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;				//流畅优先 

+ 195 - 73
static/h52.html

@@ -11,9 +11,11 @@
 				margin: 0;
 				background-color: #f3f3f3;
 			}
-			span.vjs-control-text{
+
+			span.vjs-control-text {
 				display: none;
 			}
+
 			/* iframe {
 				width: 375px;
 				height: 667px;
@@ -29,6 +31,19 @@
 				align-items: center;
 			}
 
+			.btn-container {
+				position: relative;
+			}
+
+			.videoBtnPlay {
+				position: absolute;
+				height: 100px;
+				width: 100px;
+				top: 50%;
+				left: 50%;
+				transform: translate(-50%, -50%);
+			}
+
 			.more,
 			.less {
 				flex: 1
@@ -119,33 +134,40 @@
 		</style>
 	</head>
 	<body>
-		<div id="box"></div>
+		<div class="btn-container">
+			<div id="box"> </div>
+			<div class="videoBtnPlay">
+				<img src="https://webstaticimg.oss-cn-hangzhou.aliyuncs.com/bigdata_app/img/wxplayer.png" />
+			</div>
+		</div>
 		<div id="dialog">
 
 		</div>
 		<div class="btn-box">
-			<div class="more" ontouchstart="configCamera('move', 8)" ontouchend="stopConfigCamera()">
-				<image :src="$imageURL+'/bigdata_app/image/monitor/3.png'" mode="widthFix"></image>
+			<div class="more" ontouchstart="_configCamera('move', 8)" ontouchend="_stopConfigCamera()">
+				<image src="https://s3.hnyfwlw.com/webstaticimg/bigdata_app/image/monitor/3.png" mode="widthFix">
+				</image>
 			</div>
 			<div class="direc">
-				<div class="top" ontouchstart="configCamera('move', 0)" ontouchend="stopConfigCamera()">
+				<div class="top" ontouchstart="_configCamera('move', 0)" ontouchend="_stopConfigCamera()">
 
 				</div>
-				<div class="bottom" ontouchstart="configCamera('move', 1)" ontouchend="stopConfigCamera()">
+				<div class="bottom" ontouchstart="_configCamera('move', 1)" ontouchend="_stopConfigCamera()">
 
 				</div>
-				<!-- <div class="photo" ontouchstart="configCamera('takephoto', '')">
-
+				<!-- <div class="photo" ontouchstart="_configCamera('takephoto', '')">
+					11111
 				</div> -->
-				<div class="left" ontouchstart="configCamera('move', 2)" ontouchend="stopConfigCamera()">
+				<div class="left" ontouchstart="_configCamera('move', 2)" ontouchend="_stopConfigCamera()">
 
 				</div>
-				<div class="right" ontouchstart="configCamera('move', 3)" ontouchend="stopConfigCamera()">
+				<div class="right" ontouchstart="_configCamera('move', 3)" ontouchend="_stopConfigCamera()">
 
 				</div>
 			</div>
-			<div class="less" ontouchstart="configCamera('move', 9)" ontouchend="stopConfigCamera()">
-				<image :src="$imageURL+'/bigdata_app/image/monitor/2.png'" mode="widthFix"></image>
+			<div class="less" ontouchstart="_configCamera('move', 9)" ontouchend="_stopConfigCamera()">
+				<image src="https://s3.hnyfwlw.com/webstaticimg/bigdata_app/image/monitor/2.png" mode="widthFix">
+				</image>
 			</div>
 		</div>
 		<div class="imgBtn">
@@ -157,25 +179,47 @@
 	<!-- <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="text/javascript">
+	<script type="module">
+		import Player from './videoPlayer/videoPlay-js.js'
+		let player = null
+		//上下左右和拍照
+		var str = window.location.search.substr(1)
+		var arr = str.split('&')
+		// console.log(str);
+		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)
+		window._configCamera = configCamera;
+		window._stopConfigCamera = stopConfigCamera;
+		window._postPic = postPic;
+
 		function configCamera(ctrl, movenum) {
 			if (ctrl == "takephoto") {
-				$.ajax({
-					type: "POST",
-					url: "https://wx.hnyfwlw.com/api/api_gateway?method=camera.camera_manage.camera_takephoto",
-					data: {
-						device_id: device_id,
-					}
-				}).then((res) => {
-					if (res.data.data) {
-						var data = JSON.parse(res.data.data);
-						var picUrl = data.data.picUrl;
-					} else {
-						console.log(res.data.message)
-					}
-				});
+				if (player) {
+					// 云联的拍照特殊处理
+					player.screenshot('yunlianPlayer')
+				} else {
+					$.ajax({
+						type: "POST",
+						url: "https://wx.hnyfwlw.com/api/api_gateway?method=camera.camera_manage.camera_takephoto",
+						data: {
+							device_id: device_id,
+							token
+						}
+					}).then((res) => {
+						if (res.data.data) {
+							var data = JSON.parse(res.data.data);
+							var picUrl = data.data.picUrl;
+						} else {
+							console.log(res.data.message)
+						}
+					});
+				}
+
 			} else {
 				//上下左右、放大、缩小
 				$.ajax({
@@ -185,6 +229,7 @@
 						device_id: device_id,
 						ctrl: ctrl,
 						movenum: movenum,
+						token
 					}
 				}).then((res) => {
 					$('#dialog').html('指令下发成功,请等待...').stop().show(500).delay(3000).hide(500)
@@ -193,67 +238,144 @@
 		}
 
 		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
 				},
 			});
 		}
-		//上下左右和拍照
-		var str = window.location.search.substr(1)
-		var arr = str.split('&')
-		// console.log(str);
-		var device_id = arr[0].split('=')[1]
-		// console.log(device_id);
-		var accessToken = arr[1].split('=')[1]
-		// console.log(accessToken)
-		$.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
-				// device_id: 'FA8690323-1',
-				// token: localStorage.getItem('session_key')
-			}
-		}).then((res) => {
-			// console.log(JSON.stringify(res))
-			if(res.message == '') {
-				if (typeof res.data == 'string') {
-					var data = eval('(' + res.data + ')');
+
+		function postPic(file) {
+			let form = new FormData()
+			form.append('img_file', file)
+			form.append('device_id', device_id)
+			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,
+				data: form
+			}).then((res) => {
+			
+				if (res.message == '') {
+					$('#dialog').html('拍照成功').stop().show(500).delay(1500).hide(500)
 				} else {
-					var data = res.data;
+					$('#dialog').html(res.data.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)
 				}
-				// console.log(data, 'data');
-				let 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)
-				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('开始播放')
+			})
+			await player.init()
+			setTimeout(() => {
+				player.play('yunlianPlayer', {
+					streamURL: videoURL,
+
+					channelId: '0',
+
+					bitStream: '0',
+
+					isLive: true
 				})
-			} else {
-				alert(res.message)
-			}
+			}, 1000)
+		}
+
+
+		$('.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;
+					}
+					console.log(data, 'data');
+					if (data.type_id == 2) {
+						// 大华云联
+						initYunlianPlayer(data.rtsp)
+
+					} else {
+						let 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)
+						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('开始播放')
+						})
+					}
+
+				} else {
+					alert(res.message)
+				}
+
+			})
 
 		})
 		document.addEventListener('UniAppJSBridgeReady', function() {
 			$('.imgBtn').click(function() {
+				// if (player) {
+				// 	player.close('yunlianPlayer')
+				// 	player = null
+				// }
+
 				uni.navigateTo({
 					url: '/pages/monitor/imagelist?id=' + device_id
 				})

Різницю між файлами не показано, бо вона завелика
+ 1 - 0
static/videoPlayer/playerWasm/PlaySDKInterface.js


Різницю між файлами не показано, бо вона завелика
+ 1023 - 0
static/videoPlayer/playerWasm/public.js


Різницю між файлами не показано, бо вона завелика
+ 1147 - 0
static/videoPlayer/videoPlay-js.js