| | |
| | | <template> |
| | | <div class="call-container"> |
| | | <div class="content-wrapper"> |
| | | <div class="input-group"> |
| | | <div class="input-item"> |
| | | <span class="input-label">我的 userId:</span> |
| | | <input v-model="uid" class="input-field" /> |
| | | </div> |
| | | |
| | | <div class="input-item"> |
| | | <span class="input-label">对方 userId:</span> |
| | | <input v-model="peerUid" class="input-field" /> |
| | | </div> |
| | | </div> |
| | | <!-- <div class="input-group">--> |
| | | <!-- <div class="input-item">--> |
| | | <!-- <span class="input-label">我的 userId:</span>--> |
| | | <!-- <input v-model="uid" class="input-field" />--> |
| | | <!-- </div>--> |
| | | <!-- --> |
| | | <!-- <div class="input-item">--> |
| | | <!-- <span class="input-label">对方 userId:</span>--> |
| | | <!-- <input v-model="peerUid" class="input-field" />--> |
| | | <!-- </div>--> |
| | | <!-- </div>--> |
| | | |
| | | <div class="button-group" v-if="false"> |
| | | <button @click="connectWS" :disabled="connected" class="btn btn-connect">连接WS</button> |
| | | </div> |
| | | <!-- 头像--> |
| | | <div class="contactAvatar"> |
| | | <img :src="defaultAvatar" alt=""></img> |
| | | </div> |
| | | <div class="contactAvatar"> |
| | | <img :src="defaultAvatar" alt=""></img> |
| | | </div> |
| | | <div class="status-group"> |
| | | <!-- <strong class="status-text">状态:<span :style="{color: getStateColor(state)}">{{ state }}</span></strong>--> |
| | | <strong v-if="state==='in-call'" class="status-text">通话时长:{{ durationText }}</strong> |
| | | </div> |
| | | <div class="button-group"> |
| | | <button v-if="false" @click="requestCall" :disabled="!connected || state!=='idle'" class="btn btn-call">呼叫</button> |
| | | |
| | | <button v-if="state==='ringing'" @click="acceptCall" class="btn btn-accept">接听</button> |
| | | <button v-if="state==='ringing'" @click="rejectCall" class="btn btn-reject">拒绝</button> |
| | | |
| | | <button @click="hangup" :disabled="!connected || (state!=='calling' && state!=='in-call')" class="btn btn-hangup">挂断</button> |
| | | <button v-if="state==='calling' || state==='in-call'" @click="hangup" class="btn btn-hangup">挂断</button> |
| | | </div> |
| | | |
| | | <div class="status-group"> |
| | | <!-- <strong class="status-text">状态:<span :style="{color: getStateColor(state)}">{{ state }}</span></strong>--> |
| | | <strong v-if="state==='in-call'" class="status-text">通话时长:{{ durationText }}</strong> |
| | | </div> |
| | | |
| | | </div> |
| | | |
| | | <!-- <div class="tip-message">--> |
| | |
| | | offeredByPeer = false |
| | | lastOfferSdp = null |
| | | state.value = 'idle' |
| | | |
| | | // 返回上一页(uni-app的语音通话列表页面) |
| | | if (window.uni) { |
| | | window.uni.navigateBack() |
| | | } else { |
| | | log('❌ uni对象不存在,无法返回上一页') |
| | | } |
| | | } |
| | | |
| | | async function startOffer() { |
| | |
| | | lastOfferSdp = null |
| | | |
| | | state.value = 'idle' |
| | | |
| | | // 返回上一页(uni-app的语音通话列表页面) |
| | | if (window.uni) { |
| | | window.uni.navigateBack() |
| | | } else { |
| | | log('❌ uni对象不存在,无法返回上一页') |
| | | } |
| | | } |
| | | |
| | | onMounted(() => { |
| | |
| | | .status-text { |
| | | font-size: 16px; |
| | | color: #333; |
| | | text-align: center; |
| | | margin-bottom: 50px; |
| | | } |
| | | |
| | | .tip-message { |