WXL (wul)
6 天以前 a5cba9ab040f6f97558046885dce3017f9bab7e9
src/utils/sipService.js
@@ -11,13 +11,33 @@
    wsUrl: "wss://10.10.0.220:7443",
    domain: "10.10.0.220",
  },
   杭州市第一人民医院湖滨院区: {
  第一人民医院湖滨院区: {
    wsUrl: "wss://192.169.129.198:7443",
    domain: "192.169.129.198",
  },
  杭州市第一人民医院吴山院区: {
  第一人民医院吴山院区: {
    wsUrl: "wss://192.169.129.198:7443",
    domain: "192.169.129.198",
  },
  省立同德翠苑院区: {
    wsUrl: "wss://220.88.10.62:7443",
    domain: "220.88.10.62",
  },
  省立同德之江院区: {
    wsUrl: "wss://220.88.10.62:7443",
    domain: "220.88.10.62",
  },
  省立同德闲林院区: {
    wsUrl: "wss://220.88.10.62:7443",
    domain: "220.88.10.62",
  },
  省立同德天目山路院区: {
    wsUrl: "wss://220.88.10.62:7443",
    domain: "220.88.10.62",
  },
  省立同德青山湖院区: {
    wsUrl: "wss://220.88.10.62:7443",
    domain: "220.88.10.62",
  },
  // 可以继续添加其他医院配置
  default: {
@@ -35,6 +55,7 @@
    this.isRegistered = false; // 新增注册状态标志
    this.registrationTime = null; // 新增注册成功时间戳
    this.currentConfig = null; // 存储当前配置
    this.isManualEnd = false;
  }
  // 获取医院配置方法
  getHospitalConfig() {
@@ -136,7 +157,7 @@
  makeCall(targetNumber) {
    const { canCall, reason } = this.canMakeCall();
    if (!canCall) {
      Message.error(reason);
      Message.info(reason);
      return Promise.reject(new Error(reason));
    }
    return new Promise((resolve, reject) => {
@@ -162,6 +183,10 @@
          eventHandlers: {
            progress: () => this.updateCallStatus("calling", "呼叫中..."),
            failed: (e) => {
              if (this.isManualEnd) {
                console.log("主动挂断,忽略失败事件");
                return;
              }
              this.handleCallFailure(e, reject);
            },
            ended: () => this.updateCallStatus("ended", "通话结束"),
@@ -419,9 +444,14 @@
  endCall() {
    if (this.currentSession) {
      this.isManualEnd = true;
      this.currentSession.terminate();
      this.updateCallStatus("ended", "通话已结束");
      this.currentSession = null;
      // 延迟重置标志,避免影响后续事件
      setTimeout(() => {
        this.isManualEnd = false;
      }, 100);
    }
  }