From 43017c316ab6a2e11305a7f016b12d13736e8cc1 Mon Sep 17 00:00:00 2001
From: WXL (wul) <wl_5969728@163.com>
Date: 星期二, 02 十二月 2025 17:33:33 +0800
Subject: [PATCH] 测试完成
---
src/components/CallButton/index.vue | 43 ++++++++++++++++++++++++++++++++++++-------
1 files changed, 36 insertions(+), 7 deletions(-)
diff --git a/src/components/CallButton/index.vue b/src/components/CallButton/index.vue
index bc17eea..c2bd148 100644
--- a/src/components/CallButton/index.vue
+++ b/src/components/CallButton/index.vue
@@ -11,10 +11,17 @@
<!-- 鍛煎彨鎸夐挳 -->
<button
- :class="['call-btn', { calling: isCalling }]"
+ :class="[
+ 'call-btn',
+ {
+ calling: isCalling,
+ registering: isRegistering,
+ },
+ ]"
@click="startCall"
- :disabled="isCalling || sipStatus !== '宸叉敞鍐�'"
+ :disabled="isButtonDisabled"
>
+ <i v-if="isRegistering" class="el-icon-loading"></i>
{{ callButtonText }}
</button>
@@ -41,6 +48,7 @@
const randomNum = Math.floor(Math.random() * 20) + 1000; // 瀹氫箟闅忔満鍒嗘満鍙�
return {
isCalling: false,
+ isRegistering: true, // 鍒濆涓烘敞鍐屼腑鐘舵��
randomNum: randomNum,
randomID: null,
callStatus: "idle", // idle, calling, connected, ended
@@ -74,11 +82,17 @@
}
return "";
},
- callStatusClass() {
- return `status-${this.callStatus}`;
+ isButtonDisabled() {
+ return (
+ this.isCalling || this.sipStatus !== "宸叉敞鍐�" || this.isRegistering
+ );
},
callButtonText() {
+ if (this.isRegistering) return "娉ㄥ唽涓�...";
return this.isCalling ? "閫氳瘽涓�..." : "涓�閿懠鍙�";
+ },
+ callStatusClass() {
+ return `status-${this.callStatus}`;
},
},
created() {
@@ -87,15 +101,24 @@
async mounted() {
await this.CallgetList();
+ this.isRegistering = true; // 寮�濮嬫敞鍐�
sipService.init(this.sipConfig);
// 璁剧疆鐘舵�佸洖璋�
sipService.onStatusChange = (status) => {
this.sipStatus = status.text;
this.sipStatusClass = `status-${status.type}`;
-
+ // 娉ㄥ唽鎴愬姛鎴栧け璐ユ椂鍙栨秷鍔犺浇鐘舵��
+ if (status.type === "registered" || status.type === "failed") {
+ this.isRegistering = false;
+ }
+ // 娉ㄥ唽鎴愬姛
+ if (status.type === "registered") {
+ this.startCallsetState();
+ }
// 澶勭悊娉ㄥ唽澶辫触鍜屾柇寮�杩炴帴鎯呭喌
if (status.type === "failed" || status.type === "disconnected") {
this.overCallsetState(); // 閲婃斁鍒嗘満鍙�
+ this.isRegistering = false;
}
};
@@ -107,6 +130,13 @@
// 閫氱煡鐖剁粍浠堕�氳瘽鐘舵�佸彉鍖�
this.$emit("call-status-change", status);
};
+ // 娣诲姞娉ㄥ唽瓒呮椂澶勭悊
+ setTimeout(() => {
+ if (this.isRegistering && this.sipStatus !== "宸叉敞鍐�") {
+ this.isRegistering = false;
+ this.$message.warning("SIP娉ㄥ唽瓒呮椂锛岃妫�鏌ョ綉缁滆繛鎺�");
+ }
+ }, 10000); // 10绉掕秴鏃�
},
methods: {
async startCall() {
@@ -160,10 +190,9 @@
this.randomID = res.data[0].id;
// 姝g‘璁剧疆 sipUri
this.sipConfig.sipUri = `${this.randomNum}@192.168.10.124`;
- this.startCallsetState();
} catch (error) {
console.error("鑾峰彇鍒嗘満鍙峰け璐�:", error);
- this.updateStatus("failed", "鑾峰彇鍒嗘満鍙峰け璐�");
+ // this.updateStatus("failed", "鑾峰彇鍒嗘満鍙峰け璐�");
}
},
async startCallsetState() {
--
Gitblit v1.9.3