{"remainingRequest":"D:\\dm\\HHHT-fbky\\hhht_fbky\\node_modules\\vue-loader\\lib\\index.js??vue-loader-options!D:\\dm\\HHHT-fbky\\hhht_fbky\\src\\components\\HelloWorld.vue?vue&type=script&lang=js&","dependencies":[{"path":"D:\\dm\\HHHT-fbky\\hhht_fbky\\src\\components\\HelloWorld.vue","mtime":1740993806929},{"path":"D:\\dm\\HHHT-fbky\\hhht_fbky\\node_modules\\cache-loader\\dist\\cjs.js","mtime":1740991511838},{"path":"D:\\dm\\HHHT-fbky\\hhht_fbky\\node_modules\\babel-loader\\lib\\index.js","mtime":1740991520080},{"path":"D:\\dm\\HHHT-fbky\\hhht_fbky\\node_modules\\cache-loader\\dist\\cjs.js","mtime":1740991511838},{"path":"D:\\dm\\HHHT-fbky\\hhht_fbky\\node_modules\\vue-loader\\lib\\index.js","mtime":1740991518721}],"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//\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//\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//\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//\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//\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//\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\nimport { rtcHelper } from '@/assets/js/tr_webrtc.min.js'\n// import Dayjs from \"dayjs\";\n// import { mapGetters } from \"vuex\";\nexport default {\n name: \"Fbky\",\n // computed: {\n // ...mapGetters([\"rtcHelper\"]),\n // },\n // props: {\n // curFbkyData: {\n // //分机登录参数\n // type: Object,\n // require: true,\n // default: () => ({}),\n // },\n // ringNumber: {\n // //号码参数\n // type: String,\n // require: true,\n // default: \"111\",\n // },\n // callDisable: {\n // //呼出或挂断控制\n // type: Boolean,\n // require: true,\n // default: false,\n // },\n // },\n data() {\n return {\n login: \"8889\", //分机号\n password: \"123456\", //分机密码\n socketUrl: \"wss://172.10.10.61:1443/webrtc\", //webSocketURL\n localIp: \"\",\n autoReg: true,\n autoAnswer: false,\n mic: \"\", //麦克风选择\n cam: \"\", //摄像头选择\n speak: \"\", //扬声器选择\n call_in_now_d: null,\n callback: {\n onRinging: function (d) {\n // 来电\n this.onRinging(d);\n },\n onCalling: function (d) {\n // 外呼\n this.onCalling(d);\n },\n onAnswer: function (d) {\n // 通话中\n this.onAnswer(d);\n },\n onHangup: function (d) {\n // 挂机\n // this.onHangup(d);\n },\n onLogin: function () {\n //登录回调\n console.log(\"登录状态在线回调\");\n document\n .getElementById(\"off_status\")\n .setAttribute(\"hidden\", \"hidden\");\n document.getElementById(\"on_status\").removeAttribute(\"hidden\");\n },\n onLogout: function () {\n //登出回调\n console.log(\"登出状态离线回调\");\n document.getElementById(\"on_status\").setAttribute(\"hidden\", \"hidden\");\n document.getElementById(\"off_status\").removeAttribute(\"hidden\");\n },\n },\n };\n },\n watch: {\n curFbkyData: {\n handler(newValue) {\n this.callHangupAll();\n console.log(\"数据更新:\", newValue);\n if (newValue.url) {\n this.login = newValue.admin;\n this.password = newValue.password;\n this.socketUrl = newValue.url;\n this.localIp = newValue.localIp;\n }\n setTimeout(() => {\n this.initPerimeter();\n }, 1500);\n },\n deep: true,\n },\n ringNumber: {\n handler(newValue) {\n this.callHangupAll();\n if (this.callDisable) {\n this.dial(0);\n }\n console.log(\"拨打号码:\", newValue);\n },\n deep: true,\n },\n callDisable: {\n handler(newValue) {\n if (newValue) {\n this.dial(0);\n console.log(\"拨号\", this.ringNumber);\n } else {\n this.callHangupAll();\n console.log(\"挂断\");\n }\n },\n deep: true,\n },\n },\n created() {\n this.initMediaDevices();\n setTimeout(() => {\n this.initPerimeter();\n }, 500);\n },\n destroyed() {\n this.callHangupAll();\n setTimeout(() => {\n this.webRtcLogout();\n }, 500);\n },\n mounted() {},\n methods: {\n getVideoDiv() {\n return document.getElementById(\"peerTag\").value;\n },\n getValue(id) {\n return document.getElementById(id).value;\n },\n setValue(id, value) {\n document.getElementById(id).value = value;\n },\n //载入参数登录\n initPerimeter() {\n if (!this.login || !this.password || !this.socketUrl) {\n alert(\"请填写必填参数\");\n return;\n }\n // 缓存配置\n localStorage.verto_login = this.login; //分机账号\n localStorage.verto_password = this.password; //分机密码\n localStorage.verto_socketUrl = this.socketUrl; //webSocketURL\n localStorage.verto_localIp = this.localIp;\n localStorage.verto_autoReg = this.autoReg; //自动登录开关\n localStorage.verto_autoAnswer = this.autoAnswer; //自动接听开关\n rtcHelper.bootstrap(\n this.login,\n this.password,\n this.socketUrl,\n this.localIp,\n this.getVideoDiv(),\n \"local_video\",\n this.callback,\n this.mic,\n this.speak,\n this.cam\n );\n // console.log(\n // \"配置载入参数\",\n // this.login,\n // this.password,\n // this.socketUrl,\n // this.localIp,\n // this.getVideoDiv(),\n // \"local_video\",\n // this.callback,\n // this.mic,\n // this.speak,\n // this.cam\n // );\n },\n //获取音视频设备\n initMediaDevices() {\n rtcHelper.getMediaDevices().then((result) => {\n try {\n let microphone = result.audioInputDevices; //麦克风\n let camera = result.videoDevices; //摄像头+\n let loudspeaker = result.audioOutputDevices; //扬声器\n let microphoneStr = \"\";\n let cameraStr = \"\";\n let loudspeakerStr = \"\";\n for (let i = 0; i < microphone.length; i++) {\n microphoneStr +=\n '\";\n }\n document.getElementById(\"audioInputDev\").innerHTML = microphoneStr;\n for (let i = 0; i < camera.length; i++) {\n cameraStr +=\n '\";\n }\n document.getElementById(\"videoInputDev\").innerHTML = cameraStr;\n for (let i = 0; i < loudspeaker.length; i++) {\n loudspeakerStr +=\n '\";\n }\n document.getElementById(\"audioOutputDev\").innerHTML = loudspeakerStr;\n if (microphone.length > 0) {\n this.mic = microphone[0].deviceId;\n }\n if (camera.length > 0) {\n this.cam = camera[0].deviceId;\n }\n if (loudspeaker.length > 0) {\n this.speak = loudspeaker[0].deviceId;\n }\n console.log(\"音视频设备:\", result, this.mic, this.cam, this.speak);\n } catch (e) {\n console.error(e);\n }\n // 自动登录\n // if (\n // localStorage.verto_autoReg == \"true\" &&\n // localStorage.verto_login &&\n // localStorage.verto_password &&\n // localStorage.verto_socketUrl\n // ) {\n // this.initPerimeter();\n // }\n });\n },\n //登录\n webRtcLogin() {\n try {\n rtcHelper.rtcLogin();\n } catch (e) {\n console.error(e);\n }\n },\n //登出\n webRtcLogout() {\n try {\n rtcHelper.rtcLogout();\n } catch (e) {\n console.error(e);\n }\n },\n // 拨号外呼\n dial(type) {\n console.log(\"拨号号码:\", this.ringNumber);\n let destinationNumber = this.ringNumber;\n if (!destinationNumber) {\n alert(\"没有输入被叫号码\");\n return;\n }\n if (type === 1) {\n // 视频呼出\n rtcHelper.rtcDial(destinationNumber, true);\n } else {\n // 语音呼出\n rtcHelper.rtcDial(destinationNumber, false);\n }\n },\n //历史记录\n logRecords(callee, type) {\n let log = \"\";\n switch (type) {\n case \"ringing\":\n log = new Date().Format(\"yyyy-MM-dd HH:mm:ss\") + \" 呼入 \" + callee;\n break;\n case \"calling\":\n log = new Date().Format(\"yyyy-MM-dd HH:mm:ss\") + \" 呼出 \" + callee;\n break;\n default:\n break;\n }\n if (localStorage.verto_his_list) {\n localStorage.verto_his_list += \",\" + log;\n } else {\n localStorage.verto_his_list = log;\n }\n },\n // =================== 通话事件 start ====================\n onRinging(d) {\n let callee = d.cidString();\n console.log(\"===========来电信息===========\" + callee);\n console.log(\"通话呼入事件\", d);\n // 判断是否自动接听\n if (localStorage.verto_autoAnswer) {\n console.log(\"自动接听\");\n if (d.params.wantVideo) {\n // 选择是否有视频\n let videoFlag = true;\n rtcHelper.rtcAnswer(d, videoFlag);\n } else {\n rtcHelper.rtcAnswer(d, false);\n }\n } else {\n document.getElementById(\"call_in_now\").innerHTML = callee;\n document.getElementById(\"call_in_now\").setAttribute(\"callID\", d.callID);\n this.call_in_now_d = d;\n }\n document.getElementById(\"call_list\").innerHTML +=\n \"
  • \" +\n callee +\n \" 呼入
  • \";\n // 缓存历史呼入记录\n this.logRecords(callee, \"ringing\");\n },\n onCalling(d) {\n let callee = d.cidString();\n console.log(\"通话呼出事件\", d);\n // 呼出通话启动\n document.getElementById(\"call_list\").innerHTML +=\n \"
  • \" +\n callee +\n \" 呼出
  • \";\n // 缓存历史呼出记录\n this.logRecords(callee, \"calling\");\n },\n onAnswer(d) {\n // 通话中处理\n console.log(\"通话中事件\", d);\n },\n onHangup(d) {\n // 挂机处理 - 接通列表处理\n // console.log(\"通话挂机事件\", d);\n },\n // =================== 通话事件 end ====================\n\n // =================== 呼入处理 start ====================\n // 呼入接听\n callInAnswer(type) {\n if (!this.call_in_now_d) {\n alert(\"当前无通话呼入\");\n return;\n }\n if (type === 1) {\n if (this.call_in_now_d.params.wantVideo) {\n // 选择是否有视频\n let videoFlag = true;\n rtcHelper.rtcAnswer(this.call_in_now_d, videoFlag);\n } else {\n rtcHelper.rtcAnswer(this.call_in_now_d, false);\n }\n } else {\n rtcHelper.rtcAnswer(this.call_in_now_d, false);\n }\n console.log(\"通话呼入\");\n document.getElementById(\"call_in_now\").innerHTML = \"\";\n this.call_in_now_d = null;\n },\n\n // 呼入挂断\n callInHangup() {\n if (!this.call_in_now_d) {\n alert(\"当前无通话呼入\");\n return;\n }\n rtcHelper.rtcHangup(this.call_in_now_d.callID);\n document.getElementById(\"call_in_now\").innerHTML = \"\";\n console.log(\"通话挂断\");\n this.call_in_now_d = null;\n },\n\n // =================== 呼入处理 end ====================\n\n // =================== 通话功能 start ==================\n checkCalling(e) {\n let callID = e.getAttribute(\"callID\");\n console.log(\"设置\", callID);\n this.setValue(\"callID\", callID);\n this.getMuteState(callID);\n this.getMuteVideoState(callID);\n },\n\n getMuteState(callID) {\n if (rtcHelper.rtcGetMuteState(callID)) {\n // 没有静音\n console.log(\"非静音,本地声音状态打开\");\n document\n .getElementById(\"mute_off_status\")\n .setAttribute(\"hidden\", \"hidden\");\n document.getElementById(\"mute_on_status\").removeAttribute(\"hidden\");\n } else {\n console.log(\"静音,本地声音状态关闭\");\n document.getElementById(\"mute_off_status\").removeAttribute(\"hidden\");\n document\n .getElementById(\"mute_on_status\")\n .setAttribute(\"hidden\", \"hidden\");\n }\n },\n\n getMuteVideoState(callID) {\n if (rtcHelper.rtcGetMuteVideoState(callID)) {\n // 没有静音\n console.log(\"非静音,本地视频状态打开\");\n document\n .getElementById(\"mute_video_off_status\")\n .setAttribute(\"hidden\", \"hidden\");\n document\n .getElementById(\"mute_video_on_status\")\n .removeAttribute(\"hidden\");\n } else {\n console.log(\"静音,本地视频状态关闭\");\n document\n .getElementById(\"mute_video_off_status\")\n .removeAttribute(\"hidden\");\n document\n .getElementById(\"mute_video_on_status\")\n .setAttribute(\"hidden\", \"hidden\");\n }\n },\n\n //保持或取消指定通话\n callHoldUnhold(callID) {\n if (callID) {\n rtcHelper.rtcHoldUnhold(callID);\n } else {\n alert(\"未选择callID\");\n }\n },\n //关闭或打开通话本地声音\n callMuteUnmute(callID) {\n if (callID) {\n rtcHelper.rtcMuteUnmute(callID);\n this.getMuteState(callID);\n } else {\n alert(\"未选择callID\");\n }\n },\n //关闭或打开本地视频\n callMuteUnmuteVideo(callID) {\n if (callID) {\n rtcHelper.rtcMuteUnmuteVideo(callID);\n this.getMuteVideoState(callID);\n } else {\n alert(\"未选择callID\");\n }\n },\n //挂断指定callID通话\n callHangup(callID) {\n if (callID) {\n rtcHelper.rtcHangup(callID);\n alert(\"callID\", callID);\n } else {\n alert(\"未选择callID\");\n }\n },\n //挂断所有通话\n callHangupAll() {\n rtcHelper.rtcHangupAll();\n },\n //向指定通话发送DTMF\n callDtmf(callID, dtmfKey) {\n if (callID) {\n rtcHelper.rtcDtmf(callID, dtmfKey);\n } else {\n alert(\"未选择callID\");\n }\n },\n // =================== 通话功能 end ==================\n },\n};\n",{"version":3,"sources":["HelloWorld.vue"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA6QA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA","file":"HelloWorld.vue","sourceRoot":"src/components","sourcesContent":["\n\n\n\n"]}]}