var Vcss2d_show = 1 ; // 0 不显示 1 圆点 2显示 var T_sn_list = [] //订阅 SN $(window).load(function () { $("#v_modes_2").hide(); $("#v_modes_1").show(); }) function f_v3d_loadProject(id) { iot3d.loadProject(id,true,function () { // iot3d.BackgroundScene() iot3d.GetRenderer().setClearColor(0x000000,0) f_louceng() setTimeout(function(){ f_v_v3d() },3000); }) // 加载项目 ProjectID:项目ID, load_is:是否立即渲染 // 鼠标在 模型内双击 iot3d.Model_onDblclick(function (Model) { console.log("onDblclick_Model!!!:", Model) f_DeviceonDblclick(Model.uuid) // // 触发后 聚焦显示 设备名称 // setTimeout(function(){ // f_v_v3d() // // 延时后 正常显示圆点 // setTimeout(function(){ // Vcss2d_show = 1 // f_v_v3d() // },10000); // },2000); }) } f_louceng_show_x = "" function f_louceng_show(x){ if(x == null){ x = f_louceng_show_x }else { f_louceng_show_x = x } if (x.length == 0 ){ c_rlist = iot3d.GetScene().children for (var C_key in c_rlist) { c_rlist[C_key].visible = true $(".css_2d_"+c_rlist[C_key].uuid).show(); } }else { // 隐藏其他层 c_rlist = iot3d.GetScene().children for (var C_key in c_rlist) { if (c_rlist[C_key].name.includes("层") || c_rlist[C_key].name.includes("楼") || c_rlist[C_key].name.includes("库")) { c_rlist[C_key].visible = false $(".css_2d_"+c_rlist[C_key].uuid).hide(); } } iot3d.GetModelByUuid(x).visible = true $(".css_2d_"+x).show(); } } // 渲染楼层 function f_louceng() { c_rlist = iot3d.GetScene().children for (var C_key in c_rlist) { if (c_rlist[C_key].name.includes("层") || c_rlist[C_key].name.includes("楼") || c_rlist[C_key].name.includes("库")) { $("#v_modes_box").append("
\n" + " \n" + "

"+c_rlist[C_key].name+"

\n" + "
") } } } function f_v_v3d() { for (var C_key in C_json.Device.DeviceList) { Device_r = C_json.Device.DeviceList[C_key] if(Device_r.T_3dview.length > 0){ // pubSub.publish(data[i].T_3dview, data[i]); // console.log("c:",Device_r.T_3dview) Group_Object_Control(Device_r.T_3dview, Device_r) } } f_louceng_show(null) } // 修改设备阅览方式 function f_Vcss2d(x) { Vcss2d_show = x; f_v_v3d();// 刷新页面 if(x == 1){ $("#v_modes_2").hide(); $("#v_modes_1").show(); } if(x == 2){ $("#v_modes_1").hide(); $("#v_modes_2").show(); } f_louceng_show('') } var xtime = 0 var Object_Control_Time =new Map(); function Group_Object_Control(uuid,json_s) { if(iot3d == null) return; let Ob = iot3d.GetModelByUuid(uuid) if (Ob == undefined) return console.log("uuid:",Ob) let css2d = Ob.children[1] let dt = Ob.children[2] let dh = Ob.children[3] // console.log("dt:",dt) let dled = Ob.children[4].children[8].children[0] // console.log("dled:",dled) if(Object_Control_Time.has(uuid)){ // 关闭定时器 clearInterval(Object_Control_Time.get(uuid)); Object_Control_Time.delete(uuid); } let LED_color = f_panduan(json_s) // if(f_panduan(json_s) != 1){ // LED_color = 2 // } // 定时器 -控制灯 let LED_f = true Object_Control_Time.set(uuid,setInterval(function () { if(LED_f){ LED_f = false }else { LED_f = true } // 模型 LED灯 if (LED_f){ switch (LED_color) { case 1: // 绿灯 正常 dled.material.color.r = 0 dled.material.color.g = 1 dled.material.color.b = 0 break case 2: // 红灯 产品 dled.material.color.r = 1 dled.material.color.g = 0 dled.material.color.b = 0 break case 0: // 黄灯 掉线 dled.material.color.r = (1/255 * 227) dled.material.color.g = (1/255 * 227) dled.material.color.b = (1/255 * 227) break } }else { // LED 白色灯 dled.material.color.r = 1 dled.material.color.g = 1 dled.material.color.b = 1 } // css2d switch (Vcss2d_show) { case 0: css2d.visible = false break; case 1: if (LED_f){ css2d.visible = true }else { css2d.visible = false } break; case 2: css2d.visible = true break; } iot3d.Render() // 刷新 }, 300)); // CSS2D css2d.visible = true parent_m =f_search_parent(Ob) switch (Vcss2d_show) { case 0: case 1: switch (LED_color) { case 1: // 绿灯 正常 css2d.Up_Html("
") break case 2: // 红灯 产品 css2d.Up_Html("
") break case 0: // 红灯 产品 css2d.Up_Html("
") break } break; case 2: switch (LED_color) { case 1: // 绿灯 正常 css2d.Up_Html("
"+json_s.T_name+"
温度:"+json_s.T_DeviceSensorData.T_t.toFixed(1)+"
湿度:"+json_s.T_DeviceSensorData.T_rh.toFixed(1)+"
") break case 2: // 红灯 产品 css2d.Up_Html("
"+json_s.T_name+"
温度:"+json_s.T_DeviceSensorData.T_t.toFixed(1)+"
湿度:"+json_s.T_DeviceSensorData.T_rh.toFixed(1)+"
") break case 0: // 红灯 产品 css2d.Up_Html("
"+json_s.T_name+"
温度:"+json_s.T_DeviceSensorData.T_t.toFixed(1)+"
湿度:"+json_s.T_DeviceSensorData.T_rh.toFixed(1)+"
") break } break; } // console.log("json_s:",dt,json_s.T_t,json_s.T_rh) dt.Up_Text(""+json_s.T_DeviceSensorData.T_t.toFixed(1)) dh.Up_Text(""+json_s.T_DeviceSensorData.T_rh.toFixed(1)) } // 聚焦设备 function f_DeviceonDblclick(uuid) { Patrol_mode_is = true // f_Patrol_mode() Display_mode_is = 0 $("#Display_mode").html("关闭透视") if(uuid == undefined) alert("设备没有绑定模型"); if(uuid.length > 0){ // 由于 可能开启了 巡逻,这里需要加延时,不然会抽搐 setTimeout(function(){ iot3d.startFocus(iot3d.GetModelByUuid(uuid),2) // // 触发后 聚焦显示 设备名称 // setTimeout(function(){ // Vcss2d_show = 2 // f_v_v3d() // // 延时后 正常显示圆点 // setTimeout(function(){ // Vcss2d_show = 1 // f_v_v3d() // },10000); // },2000); },500); } } function dateChangeFormat(format, date) { date = new Date(date); const dataItem = { 'Y+': date.getFullYear().toString(), 'm+': (date.getMonth() + 1).toString(), 'd+': date.getDate().toString(), 'H+': date.getHours().toString(), 'M+': date.getMinutes().toString(), 'S+': date.getSeconds().toString(), }; Object.keys(dataItem).forEach((item) => { const ret = new RegExp(`(${item})`).exec(format); if (ret) { format = format.replace(ret[1], ret[1].length === 1 ? dataItem[item] : dataItem[item].padStart(ret[1].length, '0')); } }); return format; } // 时间比较 function dateChangeFormat_xiangcha( date) { // console.log("===========") a_t = (new Date(dateChangeFormat('YYYY-mm-dd HH:MM:SS', date)).getTime()/1000) b_t = ((new Date()) / 1000) // console.log("a_t:",a_t,"b_t:",b_t,">",b_t - a_t) return parseInt(b_t - a_t) ; } // 判断状态 返回 0离线 1正常 2超标 function f_panduan(Ds) { // console.log("Ds:",Ds) // 初始化状态 src_img = "记录.png" // if(Ds.T_sn == "YD062289057646669" || Ds.T_sn == "KF868131063451706" ){ // var myDate = new Date(); // timexx= myDate.getFullYear() + "-" + (myDate.getMonth()+1) + "-" + myDate.getDate() // if(!timeX.isDuringDate(timexx+' 05:00', timexx+' 17:00')){ // src_img = "离线.png" // break; // } // // } if(Ds.T_DeviceSensorParameter.T_free == 1){ // 传感器 超标 console.log("闲置状态 ",Ds.T_id); return 0 } // 是否 离线 // if(Ds.T_online > 1) { // // 传感器超时 // // src_img = "离线-线.png" // // if(Ds.T_sn.indexOf("YD") != -1){ // // src_img = "离线.png" // // } // return 0 // } if(Ds.T_online != 1 && Ds.T_online_s != 1 ){ console.log("离线:",Ds.T_online , Ds.T_online_s) return 0 } if(Ds.T_online != 1 && Ds.T_online_s != 1 ){ console.log("离线:",Ds.T_online , Ds.T_online_s) return 0 } // 传感器正常 // if(Ds.T_sn.indexOf("YD") != -1){ // if(Ds.T_monitor == 0 ){ // src_img = "停止.png" // } // return 0 // } // console.log("超标1:"); // 是否 超时 let outtime = 60 * 40 if( dateChangeFormat_xiangcha(Ds.T_DeviceSensorData.T_time) > outtime) { // 传感器超时 // src_img = "离线-线.png" // if(Ds.T_sn.indexOf("YD") != -1){ // src_img = "离线.png" // } console.log("超时:",Ds.T_DeviceSensorData.T_time,dateChangeFormat_xiangcha(Ds.T_DeviceSensorData.T_time),Ds) return 0 } // console.log("超标1:",Ds.T_t , Ds.T_Tupper,Ds.T_t >= Ds.T_Tupper); // 是否 超标 if (( Ds.T_DeviceSensorParameter.T_Tlower > Ds.T_DeviceSensorData.T_t) || ( Ds.T_DeviceSensorData.T_t > Ds.T_DeviceSensorParameter.T_Tupper)){ console.log("温度超标", C_b.T_DeviceSensorParameter.T_Tlower , C_b.T_DeviceSensorData.T_t , C_b.T_DeviceSensorData.T_t , C_b.T_DeviceSensorParameter.T_Tupper) return 2 } if (( Ds.T_DeviceSensorParameter.T_RHlower > Ds.T_DeviceSensorData.T_rh) || ( Ds.T_DeviceSensorData.T_rh > Ds.T_DeviceSensorParameter.T_RHupper)){ console.log("湿度超标", C_b.T_DeviceSensorParameter.T_RHlower , C_b.T_DeviceSensorData.T_rh , C_b.T_DeviceSensorData.T_rh , C_b.T_DeviceSensorParameter.T_RHupper) return 2 } // console.log("f_panduan:",Ds,caobiao) // if(Ds.T_id == 1){ // console.log("Ds.T_id == 1:",Ds, caobiao); // } // console.log("超标2:",caobiao); // if(Ds.T_DeviceSensorParameter.T_free == 0){ // // 传感器 超标 // // console.log("超标3:",Ds.T_id); // return 2 // } return 1 } function f_search_parent(x) { if(x.parent.name == "Scene"){ return x } return f_search_parent(x.parent) }