| 1 |
- (window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-5f9df8bd"],{"0681":function(e,t,n){"use strict";n("606c")},"606c":function(e,t,n){},b15f:function(e,t,n){"use strict";n.d(t,"b",(function(){return i})),n.d(t,"e",(function(){return a})),n.d(t,"a",(function(){return s})),n.d(t,"d",(function(){return r})),n.d(t,"c",(function(){return l}));var o=n("b775");function i(){return Object(o["a"])({url:"/sis/onvif/discover",method:"get"})}function a(e){return Object(o["a"])({url:"/sis/onvif/camera/testAndSave",method:"post",data:e})}function s(e){return Object(o["a"])({url:"/sis/onvif/ptz/control",method:"post",data:e})}function r(e){return Object(o["a"])({url:"/sis/onvif/osd/set",method:"post",data:e})}function l(e){return Object(o["a"])({url:"/sis/onvif/osd/get",method:"get",params:e})}},b42c:function(e,t,n){"use strict";n("f9d3")},d573:function(e,t,n){"use strict";n.r(t);var o=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"app-container"},[n("el-row",{staticClass:"mb8",attrs:{gutter:10}},[n("el-col",{attrs:{span:1.5}},[n("el-button",{attrs:{type:"primary",plain:"",icon:"el-icon-search",size:"mini",loading:e.discoveryLoading},on:{click:e.handleDiscover}},[e._v(" 搜索局域网设备 ")])],1),n("right-toolbar")],1),n("el-alert",{staticStyle:{"margin-bottom":"20px"},attrs:{title:"提示:请确保本服务与ONVIF摄像头在同一个局域网(VLAN)内。",type:"info","show-icon":"",closable:!1}}),n("el-table",{directives:[{name:"loading",rawName:"v-loading",value:e.discoveryLoading,expression:"discoveryLoading"}],staticStyle:{width:"100%"},attrs:{data:e.discoveredDevices}},[n("el-table-column",{attrs:{type:"index",label:"序号",width:"55",align:"center"}}),n("el-table-column",{attrs:{prop:"ip",label:"IP 地址"}}),n("el-table-column",{attrs:{label:"操作",width:"180",align:"center"},scopedSlots:e._u([{key:"default",fn:function(t){return[n("el-button",{attrs:{type:"text",size:"mini",icon:"el-icon-plus"},on:{click:function(n){return e.handleAddDevice(t.row)}}},[e._v(" 添加并拉流 ")])]}}])})],1),n("el-dialog",{attrs:{title:e.dialogTitle,visible:e.dialogVisible,width:"600px","append-to-body":""},on:{"update:visible":function(t){e.dialogVisible=t},close:e.handleCloseDialog}},[n("el-form",{ref:"deviceFormRef",attrs:{model:e.deviceForm,rules:e.rules,"label-width":"100px"}},[n("el-form-item",{attrs:{label:"设备名称",prop:"name"}},[n("el-input",{attrs:{placeholder:"请输入设备名称"},model:{value:e.deviceForm.name,callback:function(t){e.$set(e.deviceForm,"name",t)},expression:"deviceForm.name"}})],1),n("el-form-item",{attrs:{label:"IP 地址"}},[n("el-input",{attrs:{disabled:""},model:{value:e.deviceForm.ip,callback:function(t){e.$set(e.deviceForm,"ip",t)},expression:"deviceForm.ip"}})],1),n("el-form-item",{attrs:{label:"用户名",prop:"username"}},[n("el-input",{attrs:{placeholder:"请输入摄像头用户名"},model:{value:e.deviceForm.username,callback:function(t){e.$set(e.deviceForm,"username",t)},expression:"deviceForm.username"}})],1),n("el-form-item",{attrs:{label:"密码",prop:"password"}},[n("el-input",{attrs:{type:"password",placeholder:"请输入摄像头密码","show-password":""},model:{value:e.deviceForm.password,callback:function(t){e.$set(e.deviceForm,"password",t)},expression:"deviceForm.password"}})],1)],1),e.cameraSaved?n("div",{staticClass:"ptz-control-panel"},[n("el-divider",[e._v("云台控制")]),n("div",{staticClass:"ptz-controls-wrapper"},[n("div",{staticClass:"ptz-dpad"},[n("div"),n("el-button",{attrs:{circle:"",icon:"el-icon-top"},nativeOn:{mousedown:function(t){return e.handlePtzCommand("up")},mouseup:function(t){return e.handlePtzCommand("stop")}}}),n("div"),n("el-button",{attrs:{circle:"",icon:"el-icon-back"},nativeOn:{mousedown:function(t){return e.handlePtzCommand("left")},mouseup:function(t){return e.handlePtzCommand("stop")}}}),n("el-button",{attrs:{circle:"",type:"danger"},on:{click:function(t){return e.handlePtzCommand("stop")}}},[n("i",{staticClass:"el-icon-switch-button"})]),n("el-button",{attrs:{circle:"",icon:"el-icon-right"},nativeOn:{mousedown:function(t){return e.handlePtzCommand("right")},mouseup:function(t){return e.handlePtzCommand("stop")}}}),n("div"),n("el-button",{attrs:{circle:"",icon:"el-icon-bottom"},nativeOn:{mousedown:function(t){return e.handlePtzCommand("down")},mouseup:function(t){return e.handlePtzCommand("stop")}}}),n("div")],1),n("div",{staticClass:"ptz-zoom-focus-controls"},[n("div",{staticClass:"control-group"},[n("span",{staticClass:"label"},[e._v("变焦")]),n("el-button-group",[n("el-button",{attrs:{size:"small",icon:"el-icon-plus"},nativeOn:{mousedown:function(t){return e.handlePtzCommand("zoom_in")},mouseup:function(t){return e.handlePtzCommand("stop")}}},[e._v("拉近")]),n("el-button",{attrs:{size:"small",icon:"el-icon-minus"},nativeOn:{mousedown:function(t){return e.handlePtzCommand("zoom_out")},mouseup:function(t){return e.handlePtzCommand("stop")}}},[e._v("推远")])],1)],1),n("div",{staticClass:"control-group"},[n("span",{staticClass:"label"},[e._v("聚焦")]),n("el-button-group",[n("el-button",{attrs:{size:"small",icon:"el-icon-plus"},nativeOn:{mousedown:function(t){return e.handlePtzCommand("focus_in")},mouseup:function(t){return e.handlePtzCommand("stop")}}},[e._v("拉近")]),n("el-button",{attrs:{size:"small",icon:"el-icon-minus"},nativeOn:{mousedown:function(t){return e.handlePtzCommand("focus_out")},mouseup:function(t){return e.handlePtzCommand("stop")}}},[e._v("推远")])],1)],1),n("div",{staticClass:"control-group"},[n("span",{staticClass:"label"},[e._v("速度")]),n("el-slider",{staticStyle:{flex:"1"},attrs:{min:.1,max:1,step:.1},model:{value:e.controlSpeed,callback:function(t){e.controlSpeed=t},expression:"controlSpeed"}})],1)])])],1):e._e(),n("div",{staticClass:"dialog-footer",attrs:{slot:"footer"},slot:"footer"},[n("el-button",{on:{click:function(t){e.dialogVisible=!1}}},[e._v("取 消")]),e.cameraSaved?n("el-button",{attrs:{type:"info"},on:{click:function(t){e.dialogVisible=!1}}},[e._v(" 关闭 ")]):n("el-button",{attrs:{type:"primary",loading:e.saveLoading},on:{click:e.handleTestAndSave}},[e._v(" 保存并自动拉流 ")])],1)],1)],1)},i=[],a=(n("b0c0"),n("d3b7"),n("b15f")),s={name:"OnvifDiscovery",data:function(){return{discoveryLoading:!1,saveLoading:!1,dialogVisible:!1,cameraSaved:!1,discoveredDevices:[],activeCamera:null,deviceForm:{name:"",ip:"",username:"admin",password:""},rules:{name:[{required:!0,message:"请输入设备名称",trigger:"blur"}],username:[{required:!0,message:"请输入用户名",trigger:"blur"}],password:[{required:!0,message:"请输入密码",trigger:"blur"}]},controlSpeed:.5}},computed:{dialogTitle:function(){return this.cameraSaved?"控制设备: ".concat(this.activeCamera.cameraName):"添加新ONVIF设备"}},methods:{handleDiscover:function(){var e=this;this.discoveryLoading=!0,this.discoveredDevices=[],Object(a["b"])().then((function(t){var n=t.data||[];e.discoveredDevices=n,e.$message.success(t.msg||"成功发现 ".concat(n.length," 个设备"))})).catch((function(t){console.error("ONVIF discovery failed:",t),e.$message.error("设备发现失败,请检查服务和网络连接。")})).finally((function(){e.discoveryLoading=!1}))},handleAddDevice:function(e){this.deviceForm.name=e.manufacturer,this.deviceForm.ip=e.ip,this.dialogVisible=!0},handleTestAndSave:function(){var e=this;this.$refs.deviceFormRef.validate((function(t){t&&(e.saveLoading=!0,Object(a["e"])(e.deviceForm).then((function(t){e.activeCamera=t.data,e.cameraSaved=!0,e.$message({type:"success",message:"设备保存并拉流成功!现在可以进行云台控制。",duration:4e3})})).finally((function(){e.saveLoading=!1})))}))},handlePtzCommand:function(e){if(this.activeCamera&&this.activeCamera.ip){var t={ip:this.activeCamera.ip,command:e,speed:this.controlSpeed};Object(a["a"])(t).catch((function(t){console.error("PTZ command '".concat(e,"' failed:"),t)}))}else this.$message.warning("没有可控制的设备")},handleCloseDialog:function(){var e=this;this.dialogVisible=!1,this.activeCamera=null,this.cameraSaved=!1,this.$nextTick((function(){e.$refs.deviceFormRef.resetFields()}))}}},r=s,l=(n("b42c"),n("0681"),n("2877")),c=Object(l["a"])(r,o,i,!1,null,"a9717f9a",null);t["default"]=c.exports},f9d3:function(e,t,n){}}]);
|