From e3f0196e76553c9b3544cfd6bc832510318f579e Mon Sep 17 00:00:00 2001 From: duanliang <540489889@qq.com> Date: Fri, 30 May 2025 13:50:43 +0800 Subject: [PATCH] add 1 --- package-lock.json | 21 +- package.json | 3 +- src/api/home.js | 24 + src/api/sentiment.js | 7 + src/assets/com/webrtc.js | 134 +-- src/assets/images/hj-1.png | Bin 0 -> 5386 bytes src/assets/static/incoming-call-ringtone.wav | Bin 0 -> 112014 bytes src/assets/static/ringbacktone.wav | Bin 0 -> 44158 bytes .../components/Correspondence/index.vue | 205 +++- src/layout/components/Header/index.vue | 16 +- src/router/index.js | 5 + src/views/collect/components/video-box.vue | 929 ++++++++++++++++++ src/views/collect/index.vue | 7 + src/views/scenic/components/box-1.vue | 35 +- src/views/scenic/components/box-2.vue | 450 ++++++++- src/views/sentiment/index.vue | 309 +++++- 16 files changed, 2049 insertions(+), 96 deletions(-) create mode 100644 src/assets/images/hj-1.png create mode 100644 src/assets/static/incoming-call-ringtone.wav create mode 100644 src/assets/static/ringbacktone.wav create mode 100644 src/views/collect/components/video-box.vue create mode 100644 src/views/collect/index.vue diff --git a/package-lock.json b/package-lock.json index 9b12bb7..9969e43 100644 --- a/package-lock.json +++ b/package-lock.json @@ -22,7 +22,8 @@ "vue-countup-v3": "^1.4.2", "vue-echarts": "^7.0.3", "vue-router": "^4.4.5", - "vue3-seamless-scroll": "^2.0.1" + "vue3-seamless-scroll": "^2.0.1", + "vuedraggable": "^4.1.0" }, "devDependencies": { "@vitejs/plugin-vue": "^5.2.1", @@ -4993,6 +4994,12 @@ "node": ">=18" } }, + "node_modules/sortablejs": { + "version": "1.14.0", + "resolved": "https://registry.npmmirror.com/sortablejs/-/sortablejs-1.14.0.tgz", + "integrity": "sha512-pBXvQCs5/33fdN1/39pPL0NZF20LeRbLQ5jtnheIPN9JQAaufGjKdWduZn4U7wCtVuzKhmRkI0DFYHYRbB2H1w==", + "license": "MIT" + }, "node_modules/source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", @@ -5983,6 +5990,18 @@ "throttle-debounce": "5.0.0" } }, + "node_modules/vuedraggable": { + "version": "4.1.0", + "resolved": "https://registry.npmmirror.com/vuedraggable/-/vuedraggable-4.1.0.tgz", + "integrity": "sha512-FU5HCWBmsf20GpP3eudURW3WdWTKIbEIQxh9/8GE806hydR9qZqRRxRE3RjqX7PkuLuMQG/A7n3cfj9rCEchww==", + "license": "MIT", + "dependencies": { + "sortablejs": "1.14.0" + }, + "peerDependencies": { + "vue": "^3.0.1" + } + }, "node_modules/watchpack": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.2.tgz", diff --git a/package.json b/package.json index 64822ea..c010dea 100644 --- a/package.json +++ b/package.json @@ -23,7 +23,8 @@ "vue-countup-v3": "^1.4.2", "vue-echarts": "^7.0.3", "vue-router": "^4.4.5", - "vue3-seamless-scroll": "^2.0.1" + "vue3-seamless-scroll": "^2.0.1", + "vuedraggable": "^4.1.0" }, "devDependencies": { "@vitejs/plugin-vue": "^5.2.1", diff --git a/src/api/home.js b/src/api/home.js index 1f5a2be..b613728 100644 --- a/src/api/home.js +++ b/src/api/home.js @@ -107,4 +107,28 @@ export function getSpotVideoEvents(data) { method: 'post', data }) +} +// 徒步客流统计 +export function getSpotPassengerFlow(data) { + return request({ + url: '/fjtcc-api/api/largeScreen/spot/passengerFlow', + method: 'get', + data + }) +} +// 收藏视频 +export function getVideCollectCate(data) { + return request({ + url: '/fjtcc-api/api/largeScreen/video/collectCate', + method: 'get', + data + }) +} +// 收藏排序 +export function getVideCollectCateSort(data) { + return request({ + url: '/fjtcc-api/api/largeScreen/video/collectCateSort', + method: 'post', + data + }) } \ No newline at end of file diff --git a/src/api/sentiment.js b/src/api/sentiment.js index acb5f8a..5b9e670 100644 --- a/src/api/sentiment.js +++ b/src/api/sentiment.js @@ -73,3 +73,10 @@ export function getSpotListApi() { method: 'get' }) } +// 景区列表 +export function getGsdataDetailApi(data) { + return request({ + url: `/fjtcc-api/api/largeScreen/gsdata/detail/${data}`, + method: 'get', + }) +} diff --git a/src/assets/com/webrtc.js b/src/assets/com/webrtc.js index 3c5af9e..88e602d 100644 --- a/src/assets/com/webrtc.js +++ b/src/assets/com/webrtc.js @@ -24,8 +24,9 @@ export default class MyWebrtc { var holdFlag = false; var session; - var incomingCallAudio = new window.Audio('./static/incoming-call-ringtone.wav'); - var ringbackAudio = new window.Audio('./static/ringbacktone.wav'); + var incomingCallAudio = new window.Audio('../static/incoming-call-ringtone.wav'); + var ringbackAudio = new window.Audio('../static/ringbacktone.wav'); + console.log(incomingCallAudio,'incomingCallAudio') incomingCallAudio.loop = true; ringbackAudio.loop = true; var remoteAudio = new window.Audio(); @@ -45,9 +46,9 @@ export default class MyWebrtc { video: true }; } - + this.changeAgent = null //jssip实例初始化 - this.jssipAgent = function(JsSipPhoneNumber, JsSipgetIp, JsSipgetPort, JsSipgetPassWord, remoteVideo, Registerstate, Callstate) { + this.jssipAgent = function(JsSipPhoneNumber, JsSipgetIp, JsSipgetPort, JsSipgetPassWord, remoteVideo, Registerstate, Callstate,callback) { getJsSipPhoneNumber = JsSipPhoneNumber; getJsSipgetIp = JsSipgetIp; getJsSipgetPassWord = JsSipgetPassWord; @@ -75,12 +76,13 @@ export default class MyWebrtc { uri: sip_uri_, register: true, password: sip_password_, - contact_uri: sip_uri_ + ';transport=wss', + contact_uri: sip_uri_ + ';transport=ws', ws_servers: ws_uri_ - //session_timers: false + // session_timers: false }; userAgent = new JsSIP.UA(configuration); + this.changeAgent = userAgent incomingCallAudio.play(); incomingCallAudio.pause(); ringbackAudio.play(); @@ -108,9 +110,7 @@ export default class MyWebrtc { }); //为传入或传出的会话/呼叫 userAgent.on('newRTCSession', function(data) { - console.info('onNewRTCSession: ', data); if(data.originator == 'remote') { //incoming call - if(globalCallPhoneStates == "连接中" || globalCallPhoneStates == "通话中" || globalCallPhoneStates.indexOf("来电")>-1){ var options2 = { all: false, @@ -119,8 +119,9 @@ export default class MyWebrtc { data.session.terminate(options2); return; } - - autoAnswerFlag = document.getElementById('autoAnswerFlag').checked; + // callback(data,globalCallPhoneStates) + // autoAnswerFlag = document.getElementById('autoAnswerFlag').checked; + autoAnswerFlag = false console.info("incomingSession, answer the call"); incomingSession = data.session; Datas = data.session; @@ -129,9 +130,9 @@ export default class MyWebrtc { incomingNum = incomingNum.substring(incomingNum.indexOf("sip:")+4); incomingNum = incomingNum.substring(0,incomingNum.indexOf("@")); } - + // doEvent("incoming_event",incomingNum,data.request.call_id); globalCallPhoneStates = incomingNum+"来电"; - + if(useVideo){ initVideo(); } @@ -156,7 +157,7 @@ export default class MyWebrtc { 'mediaStream': null }); } - getstatus2.innerText = "通话中"; + // getstatus2.innerText = "通话中"; globalCallPhoneStates = "通话中"; Datas.connection.ontrack = getRemoteStream; @@ -198,15 +199,18 @@ export default class MyWebrtc { }else if(currentSession!=null && currentSession._request.call_id!=null){ call_id = currentSession._request.call_id; } - doEvent("hangup_event",'',call_id); + // doEvent("hangup_event",'',call_id); //Callstate.innerText = "已挂断"; globalCallPhoneStates = "已挂断"; - + youVideo = document.getElementById('youVideo'); + youVideo.style.opacity = '0'; clearVideo(); currentSession = null; }); data.session.on('accepted', function(data) { console.info('onAccepted - ', data); + youVideo = document.getElementById('youVideo'); + youVideo.style.opacity = '1'; var call_id = ""; if(data!=null && data.request!=null && data.request.call_id!=null){ call_id = data.request.call_id; @@ -248,10 +252,10 @@ export default class MyWebrtc { var holdOption = currentSession.isOnHold(); if(holdOption.local){ holdFlag = true; - doEvent("hold_event",'',data.request.call_id); + // doEvent("hold_event",'',data.request.call_id); }else if(holdFlag){; holdFlag = false; - doEvent("unhold_event",'',data.request.call_id); + // doEvent("unhold_event",'',data.request.call_id); } } @@ -332,7 +336,8 @@ export default class MyWebrtc { } // doEvent("hangup_event",'',call_id); // globalCallPhoneStates = "未通话"; - + globalCallPhoneStates = "呼叫失败"; + if(incomingSession!=null){ incomingCallAudio.pause(); incomingSession = null; @@ -344,7 +349,8 @@ export default class MyWebrtc { if(data.session.direction === 'incoming'){ console.log('incoming - ',data.session); - autoAnswerFlag = document.getElementById('autoAnswerFlag').checked; + // autoAnswerFlag = document.getElementById('autoAnswerFlag').checked; + autoAnswerFlag = false if(!autoAnswerFlag){ incomingCallAudio.play(); } @@ -361,7 +367,7 @@ export default class MyWebrtc { // ringbackAudio.play(); console.log('call is in progress'); // getstatus2.innerText = "连接中"; - // globalCallPhoneStates = "连接中"; + globalCallPhoneStates = "连接中"; }, 'failed': function(e) { console.log('call failed: ', e); @@ -369,25 +375,25 @@ export default class MyWebrtc { if(e.cause == "Busy") { console.error("用户正忙"); // getstatus2.innerText = "用户正忙"; - // globalCallPhoneStates = "用户正忙"; + globalCallPhoneStates = "用户正忙"; } else { console.error("拨打失败"); //通话状态 // getstatus2.innerText = "拨打失败"; - // globalCallPhoneStates = "拨打失败"; - + globalCallPhoneStates = "拨打失败"; + } clearVideo(); }, 'ended': function(e) { //隐藏本地视频区域 - //selfViewWap.style.display = "none"; + // selfViewWap.style.display = "none"; console.log('call ended : ', e); //通话状态 - getstatus2.innerText = "已挂断"; + // getstatus2.innerText = "已挂断"; globalCallPhoneStates = "已挂断"; - + clearVideo(); currentSession = null; }, @@ -397,7 +403,6 @@ export default class MyWebrtc { console.log('call confirmed'); } }; - //语音拨打 this.JsSip_VoiceCall = function(callPhone,isVoice) { console.log("isVoice",isVoice); @@ -418,6 +423,7 @@ export default class MyWebrtc { } //接听 this.VoiceAnsWter = function() { + incomingCallAudio.pause(); if(useVideo){ Datas.answer({ @@ -443,6 +449,7 @@ export default class MyWebrtc { //发送DTMF this.VoiceSendDTMF = function(dtmf) { + console.log(dtmf) if(incomingSession!=null){ incomingSession.sendDTMF(dtmf); }else{ @@ -517,39 +524,41 @@ export default class MyWebrtc { function getRemoteStream(e) { ringbackAudio.pause(); console.log('getRemoteStream - ', e.track, e.streams[0]); - //remoteAudio.srcObject = e.streams[0]; - + remoteAudio.srcObject = e.streams[0]; if(useVideo){ console.log(e.streams[0]) - // youVideo.srcObject = e.streams[0]; - // document.body.addEventListener('click', function () { - // meVideo.play(); - // }); + youVideo.srcObject = e.streams[0]; + document.body.addEventListener('click', function () { + meVideo.play(); + }); // 等到视频流准备好了 - // var interval = setInterval(function () { - // if (!meVideo.videoWidth) { - // return; - // } - // //stage.appendChild(videoView); - // clearInterval(interval); - // }, 1000 / 50); + var interval = setInterval(function () { + if (!meVideo.videoWidth) { + return; + } + //stage.appendChild(videoView); + clearInterval(interval); + }, 1000 / 50); }else{ - // remoteAudio.srcObject = e.streams[0]; + remoteAudio.srcObject = e.streams[0]; + } } //初始化视频 function initVideo(){ - // meVideo = document.getElementById('meVideo'); - // meVideo.setAttribute('autoplay', ''); - // meVideo.setAttribute('playsinline', ''); - // meVideo.style.width = '212px'; - // - // youVideo = document.getElementById('youVideo'); - // youVideo.setAttribute('autoplay', ''); - // youVideo.setAttribute('playsinline', ''); - // youVideo.style.width = '531px'; + meVideo = document.getElementById('meVideo'); + meVideo.setAttribute('autoplay', ''); + meVideo.setAttribute('playsinline', ''); + meVideo.style.width = '20vh'; + + youVideo = document.getElementById('youVideo'); + youVideo.setAttribute('autoplay', ''); + youVideo.setAttribute('playsinline', ''); + // youVideo.style.width = '1000px'; + youVideo.style.opacity = '0'; + youVideo.style.height = '80vh'; navigator.mediaDevices.getUserMedia({ audio: false, @@ -558,18 +567,18 @@ export default class MyWebrtc { } }).then(function success(stream) { console.log(stream) - // meVideo.srcObject = stream; - // document.body.addEventListener('click', function () { - // meVideo.play(); - // }); - // // 等到视频流准备好了 - // var interval = setInterval(function () { - // if (!meVideo.videoWidth) { - // return; - // } - // //stage.appendChild(videoView); - // clearInterval(interval); - // }, 1000 / 50); + meVideo.srcObject = stream; + document.body.addEventListener('click', function () { + meVideo.play(); + }); + // 等到视频流准备好了 + var interval = setInterval(function () { + if (!meVideo.videoWidth) { + return; + } + //stage.appendChild(videoView); + clearInterval(interval); + }, 1000 / 50); }).catch(function (error) { alert(error.message); }); @@ -577,6 +586,7 @@ export default class MyWebrtc { //释放视频资源 function clearVideo(){ + return false if(useVideo && meVideo!=null && meVideo.srcObject!=null){ meVideo.pause(); if(meVideo.srcObject.getTracks()[0]!=null){ diff --git a/src/assets/images/hj-1.png b/src/assets/images/hj-1.png new file mode 100644 index 0000000000000000000000000000000000000000..87e120423048d0cad6091720effeac4107be688d GIT binary patch literal 5386 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 literal 0 HcmV?d00001 diff --git a/src/assets/static/incoming-call-ringtone.wav b/src/assets/static/incoming-call-ringtone.wav new file mode 100644 index 0000000000000000000000000000000000000000..601b5f38b7cb98b02e0fd8fb5bf07bb12d3311cb GIT binary patch literal 112014 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
    12@(CbwQQZH#gof*p0p_)HJxk#%lKQG)};4 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 N009sHf&Whe{|hhFaNPg^ literal 0 HcmV?d00001 diff --git a/src/assets/static/ringbacktone.wav b/src/assets/static/ringbacktone.wav new file mode 100644 index 0000000000000000000000000000000000000000..d333a7d1aee109d5d9695fb647c4135caf01f410 GIT binary patch literal 44158 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
    +
    姓名
    部门
    @@ -58,7 +59,7 @@
    {{ item.phoneNumber }}
    - +
    @@ -74,14 +75,36 @@
    - -
    - - - - -
    -
    + +
    + +
    + +
    +
    + +
    {{progressVal=='未通话'?'呼叫中...':progressVal}}
    +
    + +
    +
    + +
    {{progressVal=='未通话'?'呼叫中...':progressVal}}
    +
    +
    +
    + 重拨 + + 接听 + 挂断 + +
    + + + +
    @@ -93,8 +116,10 @@ let deptsList = ref([]) let dialogTableVisible = ref(false) let dialogTableVisible2 = ref(false) + let dialogTableVisible3 = ref(false) + let callType = ref(3) let dialogComVideo = ref(false) - const webrtcInstance = new MyWebrtc(); + const webrtcInstance = new MyWebrtc() const getComDepts = async () => { let res = await getComDeptsApi() deptsList.value = res.data @@ -110,18 +135,58 @@ dialogTableVisible2.value = true // location.href="http://192.168.0.2:81/"; } + let progressVal = ref(null) + let timer = ref(null) + watch( + () => dialogTableVisible.value, + (val) => { + // comRegister(); + + + } + ) const doCallTel = (item) => { - webrtcInstance.JsSip_VoiceCall('15123854798',true); - dialogComVideo.value=true; + callType.value = 1 + dialogTableVisible3.value=true; + nextTick(()=>{ + webrtcInstance.JsSip_VoiceCall('15123854798',true); + }) } const doCallVoice = (item) => { - webrtcInstance.JsSip_VoiceCall('854798',false); - dialogComVideo.value=true; + callType.value = 2 + dialogTableVisible3.value=true; + + nextTick(()=>{ + webrtcInstance.JsSip_VoiceCall('854798',false); + }) + } const doCallVideo = (item) => { - webrtcInstance.JsSip_VoiceCall('854798',true); - dialogComVideo.value=true; + callType.value = 3 + dialogTableVisible3.value = true; + nextTick(()=>{ + webrtcInstance.JsSip_VoiceCall('854798',true); + }) } + // 接听 + const ansWerPhone = ()=> { + //调用语音接听方法 + nextTick(()=>{ + webrtcInstance.VoiceAnsWter(); + thState.value = false + }) + } + const huangUp = ()=>{ + // clearInterval(timer.value) + //调用挂断方法 + dialogTableVisible3.value = false; + webrtcInstance.JsSip_hangUpPhone(); + + } + const closeTh = ()=>{ + huangUp() + } + const handleDepsUser = async (id, item) => { gridTitle.value = item.name dialogTableVisible.value = true @@ -129,16 +194,120 @@ gridData.value = res.data } const comRegister = () => { - webrtcInstance.jssipAgent('101','192.168.77.8','7066','Admin246246246',null,null,null); + //初始化 + nextTick(()=>{ + webrtcInstance.jssipAgent('101','192.168.77.8','7066','Admin246246246',null,null,null); + // console.log(webrtcInstance.changeAgent) + webrtcInstance.changeAgent.on('newRTCSession',(res)=>{ + timer.value = setInterval(()=>{ + progressVal.value = webrtcInstance.callPoneState() + // console.log(progressVal.value,'progressVal.value') + if(progressVal.value.includes('来电')){ + dialogTableVisible3.value = true; + thState.value = true + }else if( progressVal.value == '呼叫停止'){ + thState.value = false + // dialogTableVisible3.value = false; + // clearInterval(timer.value) + }else if( progressVal.value == '已挂断'){ + thState.value = false + closeTh() + }else{ + thState.value = false + } + },1000) + }) + + }) } + let thState = ref(false) onMounted(() => { getComDepts() getComRecord() - comRegister(); + comRegister() + return false + timer.value = setInterval(()=>{ + progressVal.value = webrtcInstance.callPoneState() + console.log(progressVal.value,'progressVal.value') + if(progressVal.value.includes('来电')){ + dialogTableVisible3.value = true; + thState.value = true + }else if( progressVal.value == '呼叫停止'){ + thState.value = false + dialogTableVisible3.value = false; + // clearInterval(timer.value) + }else if( progressVal.value == '已挂断'){ + thState.value = false + closeTh() + }else{ + thState.value = false + } + },1000) }) + diff --git a/src/views/collect/index.vue b/src/views/collect/index.vue new file mode 100644 index 0000000..a6f1128 --- /dev/null +++ b/src/views/collect/index.vue @@ -0,0 +1,7 @@ + + + diff --git a/src/views/scenic/components/box-1.vue b/src/views/scenic/components/box-1.vue index 749a6ac..0a42161 100644 --- a/src/views/scenic/components/box-1.vue +++ b/src/views/scenic/components/box-1.vue @@ -1,12 +1,13 @@