{"remainingRequest":"D:\\jenkins\\workspace\\bbsl-fvue\\node_modules\\vue-loader\\lib\\index.js??vue-loader-options!D:\\jenkins\\workspace\\bbsl-fvue\\src\\views\\frontScreens\\components\\videoPlayPlugin.vue?vue&type=script&lang=js&","dependencies":[{"path":"D:\\jenkins\\workspace\\bbsl-fvue\\src\\views\\frontScreens\\components\\videoPlayPlugin.vue","mtime":1684458238824},{"path":"D:\\jenkins\\workspace\\bbsl-fvue\\node_modules\\babel-loader\\lib\\index.js","mtime":315532800000},{"path":"D:\\jenkins\\workspace\\bbsl-fvue\\node_modules\\cache-loader\\dist\\cjs.js","mtime":499162500000},{"path":"D:\\jenkins\\workspace\\bbsl-fvue\\node_modules\\vue-loader\\lib\\index.js","mtime":499162500000}],"contextDependencies":[],"result":["//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\r\nimport utils from '@/hotent-ui-util'\r\nimport videoPluginBrowserSetting from '@/components/dialog/VideoPluginBrowserSetting.vue'\r\nexport default {\r\n components: {\r\n videoPluginBrowserSetting,\r\n },\r\n props: {\r\n options: {\r\n type: Object,\r\n default: () => {\r\n return {\r\n layout: '2x2',\r\n showToolbar: 1,\r\n simpleTips: false,\r\n mountedInit: true\r\n }\r\n },\r\n },\r\n },\r\n data() {\r\n return {\r\n text: '',\r\n downloadUrl: './../static/plugin/VideoWebPlugin.exe',\r\n showSetting: false,\r\n simpleTips: this.options.simpleTips,\r\n width: 0,\r\n height: 0,\r\n // 插件对象实例,初始化为null,需要创建多个插件窗口时,需要定义多个插件对象实例变量,各个变量唯一标志对应的插件实例\r\n oWebControl: null,\r\n bIE: !!window.ActiveXObject || 'ActiveXObject' in window, // 是否为IE浏览器\r\n pubKey: '', // demo中未使用加密,可根据需求参照开发指南自行使用加密功能\r\n initCount: 0,\r\n playMode: 0, // 播放类型,0-预览,1-回放\r\n showDivInstruction: false, // 标志是否显示使用说明弹框\r\n endTime: '',\r\n startTime: '',\r\n playTime: '',\r\n param: {\r\n argument: {\r\n appkey: window.context.videoAppkey,\r\n ip: window.context.videoIp,\r\n port: window.context.videoPort,\r\n secret: window.context.videoSecret,\r\n enableHTTPS: 1,\r\n language: 'zh_CN',\r\n layout: this.options.layout,\r\n playMode: 0,\r\n reconnectDuration: 5,\r\n reconnectTimes: 5,\r\n showSmart: 0,\r\n showToolbar: this.options.showToolbar,\r\n toolBarButtonIDs:\r\n '2048,2049,2050,2304,2306,2305,2307,2308,2309,4096,4608,4097,4099,4098,4609,4100',\r\n snapDir: 'D:/snap',\r\n videoDir: 'D:/video',\r\n },\r\n funcName: 'init',\r\n },\r\n paramPlay: {\r\n argument: {\r\n authUuid: '',\r\n cameraIndexCode: '',\r\n ezvizDirect: 0,\r\n gpuMode: 0,\r\n streamMode: 0,\r\n transMode: 1,\r\n wndId: -1,\r\n cascade: 1,\r\n },\r\n funcName: 'startPreview',\r\n },\r\n }\r\n },\r\n created() {},\r\n mounted() {\r\n this.$nextTick(() => {\r\n this.getWindowSize()\r\n })\r\n if(this.options.mountedInit){\r\n this.open()\r\n }\r\n this.$root.$on('resize', () => {\r\n this.$nextTick(() => {\r\n this.getWindowSize()\r\n if (this.oWebControl) {\r\n this.oWebControl.JS_Resize(this.width, this.height)\r\n }\r\n })\r\n })\r\n },\r\n beforeDestroy() {\r\n this.disconnect()\r\n },\r\n methods: {\r\n resize(width, height) {\r\n if(!this.oWebControl)return\r\n let iwidth = width ? width : this.width\r\n let iheight = height ? height : this.height\r\n this.oWebControl.JS_Resize(iwidth, iheight)\r\n },\r\n cutWindow(left = 0, top = 0, width = 0, height = 0) {\r\n if(!this.oWebControl)return\r\n this.oWebControl.JS_CuttingPartWindow(left, top, width, height)\r\n },\r\n repairWindow() {\r\n if(!this.oWebControl)return\r\n this.oWebControl.JS_RepairPartWindow(0, 0, this.width, this.height)\r\n },\r\n open() {\r\n this.initTime()\r\n this.initPlugin()\r\n this.getWindowSize()\r\n },\r\n destroy() {\r\n if(!this.oWebControl)return\r\n this.oWebControl.JS_DestroyWnd();\r\n },\r\n HideWnd() {\r\n if(!this.oWebControl)return\r\n this.oWebControl.JS_HideWnd();\r\n },\r\n ShowWnd() {\r\n if(!this.oWebControl)return\r\n this.oWebControl.JS_ShowWnd();\r\n },\r\n disconnect() {\r\n if(!this.oWebControl)return\r\n this.oWebControl.JS_HideWnd();\r\n this.oWebControl.JS_Disconnect().then(\r\n ()=>{\r\n console.log('销毁成功')\r\n this.oWebControl = null\r\n }\r\n )\r\n },\r\n play(code) {\r\n if (!code) return\r\n this.paramPlay.argument.cameraIndexCode = code\r\n let params = utils.deepClone(this.paramPlay)\r\n this.requestInterface(params)\r\n },\r\n requestInterface(param) {\r\n let JsonParam = param\r\n let JsonArgument = JsonParam.argument\r\n JsonParam.argument = JSON.stringify(JsonArgument)\r\n\r\n this.oWebControl.JS_RequestInterface(JsonParam).then((oData) => {\r\n console.log(oData)\r\n this.showCBInfo(JSON.stringify(oData ? oData.responseMsg : ''))\r\n })\r\n },\r\n autoInit() {\r\n let params = utils.deepClone(this.param)\r\n let JsonParam = params\r\n\r\n if (JsonParam.argument.hasOwnProperty('playMode')) {\r\n this.playMode = JsonParam.argument.playMode\r\n }\r\n //隐藏/显示轮巡功能模块\r\n // document.getElementById('TourPreview').style.display =\r\n // 0 == playMode && JsonParam.argument.hasOwnProperty('appkey')\r\n // ? ''\r\n // : 'none'\r\n\r\n //如果包含加密处理,处理加密字段\r\n if (JsonParam.argument.hasOwnProperty('encryptedFields')) {\r\n var enFields = JsonParam.argument.encryptedFields\r\n var strArray = new Array()\r\n strArray = enFields.split(',')\r\n for (var i = 0, len = strArray.length; i < len; i++) {\r\n if ('appkey' == strArray[i]) {\r\n if (JsonParam.argument.hasOwnProperty('appkey')) {\r\n var appkey = JsonParam.argument.appkey\r\n appkey = setEncrypt(appkey)\r\n JsonParam.argument.appkey = appkey\r\n }\r\n }\r\n\r\n if ('secret' == strArray[i]) {\r\n if (JsonParam.argument.hasOwnProperty('secret')) {\r\n var secret = JsonParam.argument.secret\r\n secret = setEncrypt(secret)\r\n JsonParam.argument.secret = secret\r\n }\r\n }\r\n\r\n if ('ip' == strArray[i]) {\r\n if (JsonParam.argument.hasOwnProperty('ip')) {\r\n var ip = JsonParam.argument.ip\r\n ip = setEncrypt(ip)\r\n JsonParam.argument.ip = ip\r\n }\r\n }\r\n\r\n if ('snapDir' == strArray[i]) {\r\n if (JsonParam.argument.hasOwnProperty('snapDir')) {\r\n var snapDir = JsonParam.argument.snapDir\r\n snapDir = setEncrypt(snapDir)\r\n JsonParam.argument.snapDir = snapDir\r\n }\r\n }\r\n\r\n if ('layout' == strArray[i]) {\r\n if (JsonParam.argument.hasOwnProperty('layout')) {\r\n var layout = JsonParam.argument.layout\r\n layout = setEncrypt(layout)\r\n JsonParam.argument.layout = layout\r\n }\r\n }\r\n\r\n if ('videoDir' == strArray[i]) {\r\n if (JsonParam.argument.hasOwnProperty('videoDir')) {\r\n var videoDir = JsonParam.argument.videoDir\r\n videoDir = setEncrypt(videoDir)\r\n JsonParam.argument.videoDir = videoDir\r\n }\r\n }\r\n }\r\n }\r\n\r\n //1.4.1及以上版本支持argument字段为json,以下版本argument必须为string\r\n let JsonArgument = JsonParam.argument\r\n JsonParam.argument = JSON.stringify(JsonArgument)\r\n\r\n //param = {\r\n // \"argument\": '{\"appkey\": \"21216099\",\"ip\": \"172.7.13.242\",\"port\": 443,\"secret\": \"dX5Gt0C0hmKbQ9ucHnWY\",\"enableHTTPS\": 1,\"language\": \"zh_CN\",\"layout\": \"2x2\",\"playMode\": 0,\"reconnectDuration\": 5,\"reconnectTimes\": 5,\"showSmart\": 0,\"showToolbar\": 1,\"snapDir\": \"D:/snap\",\"videoDir\": \"D:/video\"}',\r\n // \"funcName\": \"init\"\r\n //}\r\n\r\n this.oWebControl.JS_RequestInterface(JsonParam).then((oData) => {\r\n console.log(oData)\r\n this.$emit('ready')\r\n this.showCBInfo(JSON.stringify(oData ? oData.responseMsg : ''))\r\n // UpdatePlayParamValue()\r\n this.oWebControl.JS_Resize(this.width, this.height)\r\n })\r\n },\r\n // 初始化插件\r\n initPlugin() {\r\n if(this.oWebControl!==null) return\r\n console.log(\"初始化插件\")\r\n // 创建插件实例,并启动本地服务建立websocket连接,创建插件窗口\r\n this.oWebControl = new WebControl({\r\n szPluginContainer: 'playWnd',\r\n iServicePortStart: 15900,\r\n iServicePortEnd: 15909,\r\n szClassId: '23BF3B0A-2C56-4D97-9C03-0CB103AA8F11', // 用于IE10使用ActiveX的clsid\r\n cbConnectSuccess: () => {\r\n this.initCount = 0\r\n this.setCallbacks()\r\n this.oWebControl\r\n .JS_StartService('window', {\r\n dllPath: './VideoPluginConnect.dll',\r\n })\r\n .then(\r\n () => {\r\n this.oWebControl\r\n .JS_CreateWnd(\r\n 'playWnd',\r\n this.width,\r\n this.height\r\n )\r\n .then(() => {\r\n console.log('JS_CreateWnd success')\r\n this.autoInit()\r\n this.oWebControl\r\n .JS_RequestInterface({\r\n funcName: 'getRSAPubKey',\r\n argument: JSON.stringify({\r\n keyLength: 1024,\r\n }),\r\n })\r\n .then((oData) => {\r\n console.log(oData)\r\n if (oData.responseMsg.data) {\r\n this.pubKey =\r\n oData.responseMsg.data\r\n }\r\n })\r\n })\r\n },\r\n () => {}\r\n )\r\n },\r\n cbConnectError: () => {\r\n console.log('cbConnectError')\r\n this.oWebControl = null\r\n this.text = '插件未启动,正在尝试启动,请稍候...'\r\n // $('#playWnd').html('插件未启动,正在尝试启动,请稍候...')\r\n WebControl.JS_WakeUp('VideoWebPlugin://')\r\n this.initCount++\r\n if (this.initCount < 3) {\r\n setTimeout(() => {\r\n this.initPlugin()\r\n }, 3000)\r\n } else {\r\n this.showSetting = true\r\n this.text = ''\r\n }\r\n },\r\n cbConnectClose: (bNormalClose) => {\r\n // 异常断开:bNormalClose = false\r\n // JS_Disconnect正常断开:bNormalClose = true\r\n console.log('cbConnectClose')\r\n this.oWebControl = null\r\n },\r\n })\r\n },\r\n // 获取窗口宽高\r\n getWindowSize() {\r\n this.width = this.$refs.playerContainer.clientWidth\r\n this.height = this.$refs.playerContainer.clientHeight\r\n },\r\n // 初始化时间变量\r\n initTime() {\r\n this.endTime = Math.floor(\r\n new Date(\r\n this.dateFormat(new Date(), 'yyyy-MM-dd 23:59:59')\r\n .replace('-', '/')\r\n .replace('-', '/')\r\n ).getTime() / 1000\r\n ).toString()\r\n this.startTime = Math.floor(\r\n new Date(\r\n this.dateFormat(new Date(), 'yyyy-MM-dd 00:00:00')\r\n .replace('-', '/')\r\n .replace('-', '/')\r\n ).getTime() / 1000\r\n ).toString()\r\n this.playTime = Math.floor(\r\n new Date(\r\n this.dateFormat(new Date(), 'yyyy-MM-dd 00:00:00')\r\n .replace('-', '/')\r\n .replace('-', '/')\r\n ).getTime() / 1000\r\n ).toString()\r\n },\r\n // 设置窗口控制回调\r\n setCallbacks() {\r\n this.oWebControl.JS_SetWindowControlCallback({\r\n cbIntegrationCallBack: this.cbIntegrationCallBack,\r\n })\r\n },\r\n\r\n // 推送消息\r\n cbIntegrationCallBack(oData) {\r\n this.showCBInfo(JSON.stringify(oData.responseMsg))\r\n },\r\n // 显示接口返回的消息及插件回调信息\r\n showCBInfo(szInfo, type) {\r\n console.log('接口返回的消息及插件回调信息:' + type + szInfo)\r\n },\r\n\r\n // 格式化时间\r\n dateFormat(oDate, fmt) {\r\n var o = {\r\n 'M+': oDate.getMonth() + 1, //月份\r\n 'd+': oDate.getDate(), //日\r\n 'h+': oDate.getHours(), //小时\r\n 'm+': oDate.getMinutes(), //分\r\n 's+': oDate.getSeconds(), //秒\r\n 'q+': Math.floor((oDate.getMonth() + 3) / 3), //季度\r\n S: oDate.getMilliseconds(), //毫秒\r\n }\r\n if (/(y+)/.test(fmt)) {\r\n fmt = fmt.replace(\r\n RegExp.$1,\r\n (oDate.getFullYear() + '').substr(4 - RegExp.$1.length)\r\n )\r\n }\r\n for (var k in o) {\r\n if (new RegExp('(' + k + ')').test(fmt)) {\r\n fmt = fmt.replace(\r\n RegExp.$1,\r\n RegExp.$1.length == 1\r\n ? o[k]\r\n : ('00' + o[k]).substr(('' + o[k]).length)\r\n )\r\n }\r\n }\r\n return fmt\r\n },\r\n\r\n textbox(obj, min, max) {\r\n obj.value = obj.value.replace(/[^\\d]/g, '')\r\n if (\r\n parseInt(obj.value) == obj.value &&\r\n parseInt(obj.value) >= min &&\r\n parseInt(obj.value) <= max\r\n ) {\r\n } else {\r\n if (parseInt(obj.value) < min) {\r\n obj.value = min\r\n }\r\n if (parseInt(obj.value) > max) {\r\n obj.value = max\r\n }\r\n }\r\n },\r\n openModel() {\r\n this.$refs.BrowserSetting.open()\r\n },\r\n },\r\n}\r\n",null]}