WXL
3 天以前 96681523c5bc39840abf9d73cd585044568d5aad
测试完成
已修改2个文件
122 ■■■■ 文件已修改
src/components/CallButton/index.vue 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/followvisit/record/detailpage/index.vue 106 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/CallButton/index.vue
@@ -35,23 +35,29 @@
export default {
  data() {
    return {
      phoneNumber: "",
      // phoneNumber: "",
      isCalling: false,
      callStatus: "准备就绪",
      sipStatus: "未连接",
      sipStatusClass: "status-disconnected",
      sipConfig: {
        wsUrl: "wss://192.168.100.6:7443",
        sipUri: "1000@192.168.100.6",
        wsUrl: "wss://9.208.5.18:7443",
        sipUri: "1000@9.208.5.18",
        password: "Smartor@2023",
        displayName: "Web 小龙",
        // realm: "192.168.100.6:8090",
        // realm: "9.208.5.18:8090",
      },
    };
  },
  props: {
    phoneNumber: {
      type: String,
      default: ''
    }
  },
  mounted() {
    // 测试
    const ws = new WebSocket("wss://192.168.100.6:7443");
    const ws = new WebSocket("wss://9.208.5.18:7443");
    ws.onopen = () => console.log("WebSocket 连接成功");
    ws.onerror = (e) => console.error("WebSocket 错误:", e);
src/views/followvisit/record/detailpage/index.vue
@@ -215,7 +215,12 @@
    </div>
    <div class="Followuserinfos">
      <div>
        <el-form ref="form" :model="form" label-width="120px">
        <el-form
          ref="userform"
          :model="form"
          :rules="userrules"
          label-width="120px"
        >
          <div class="headline">
            <div>人工处理</div>
            <el-row :gutter="20">
@@ -224,6 +229,13 @@
                  <el-input
                    placeholder="联系电话缺失"
                    v-model="userform.telcode"
                  >
                    <el-button
                      slot="append"
                      icon="el-icon-phone"
                      @click="handleCall(userform.telcode, 'tel')"
                      :disabled="!isValidPhone(userform.telcode)"
                    ></el-button
                  ></el-input> </el-form-item
              ></el-col>
              <el-col :span="8"
@@ -231,6 +243,13 @@
                  <el-input
                    placeholder="联系人电话缺失"
                    v-model="userform.relativetelcode"
                  >
                    <el-button
                      slot="append"
                      icon="el-icon-phone"
                      @click="handleCall(userform.relativetelcode, 'relative')"
                      :disabled="!isValidPhone(userform.relativetelcode)"
                    ></el-button
                  ></el-input> </el-form-item
              ></el-col>
              <el-col :span="8"
@@ -355,7 +374,11 @@
    </div>
    <div>
      <h2>一键呼叫功能</h2>
      <CallButton />
      <CallButton
        ref="callButton"
        :phoneNumber="currentPhoneNumber"
        style="display: none"
      />
    </div>
    <div>
      <el-tabs v-model="activeName" type="border-card">
@@ -753,10 +776,25 @@
  components: {
    CallButton,
  },
  dicts: ["sys_normal_disable", "sys_user_sex", "sys_yujing", "sys_suggest"],
  data() {
    const validatePhone = (rule, value, callback) => {
      if (!value) {
        return callback(new Error("请输入联系电话"));
      }
      setTimeout(() => {
        if (!/^1[3-9]\d{9}$/.test(value)) {
          callback(new Error("请输入正确的11位手机号码"));
        } else {
          callback();
        }
      }, 300);
    };
    return {
      userid: "",
      currentPhoneNumber: "",
      callType: "", // 用于区分是哪个电话
      input: "今天身体还不错",
      radio: "2",
      taskname: "",
@@ -774,6 +812,10 @@
          { required: true, message: "请选择随访方式", trigger: "change" },
        ],
        date1: [{ required: true, message: "请选择随访时间", trigger: "blur" }],
      },
      userrules: {
        telcode: [{ validator: validatePhone, trigger: "blur" }],
        relativetelcode: [{ validator: validatePhone, trigger: "blur" }],
      },
      url: "http://9.208.2.190:8090/smartor/serviceExternal/query360PatInfo",
      postData: {
@@ -996,17 +1038,29 @@
      // 根据选择的随访方式设置时间
      const now = new Date();
      if (value.includes("七天后")) {
        this.form.date1 = new Date(Date.parse(this.form.endtime) + 3600 * 1000 * 24 * 7);
        this.form.date1 = new Date(
          Date.parse(this.form.endtime) + 3600 * 1000 * 24 * 7
        );
      } else if (value.includes("15天后")) {
        this.form.date1 = new Date(Date.parse(this.form.endtime) + 3600 * 1000 * 24 * 15);
        this.form.date1 = new Date(
          Date.parse(this.form.endtime) + 3600 * 1000 * 24 * 15
        );
      } else if (value.includes("一个月后")) {
        this.form.date1 = new Date(Date.parse(this.form.endtime) + 3600 * 1000 * 24 * 30);
        this.form.date1 = new Date(
          Date.parse(this.form.endtime) + 3600 * 1000 * 24 * 30
        );
      } else if (value.includes("三个月后")) {
        this.form.date1 = new Date(Date.parse(this.form.endtime) + 3600 * 1000 * 24 * 90);
        this.form.date1 = new Date(
          Date.parse(this.form.endtime) + 3600 * 1000 * 24 * 90
        );
      } else if (value.includes("六个月后")) {
        this.form.date1 = new Date(Date.parse(this.form.endtime) + 3600 * 1000 * 24 * 180);
        this.form.date1 = new Date(
          Date.parse(this.form.endtime) + 3600 * 1000 * 24 * 180
        );
      } else if (value.includes("一年后")) {
        this.form.date1 = new Date(Date.parse(this.form.endtime) + 3600 * 1000 * 24 * 365);
        this.form.date1 = new Date(
          Date.parse(this.form.endtime) + 3600 * 1000 * 24 * 365
        );
      }
    },
@@ -1157,6 +1211,29 @@
          // 如果有任何一个异步操作失败,会进入这里
          console.error("发生错误:", error);
        });
    },
    // 验证手机号格式
    isValidPhone(phone) {
      return /^1[3-9]\d{9}$/.test(phone);
    },
    // 呼叫处理
    handleCall(phone, type) {
      if (this.isValidPhone(phone)) {
        this.currentPhoneNumber = phone;
        this.callType = type;
        // 等待下一个tick确保值已更新
        this.$nextTick(() => {
          this.$refs.callButton.startCall();
          // 可选:根据不同类型做不同处理
          if (type === "tel") {
            console.log("正在呼叫患者本人:", phone);
          } else {
            console.log("正在呼叫联系人:", phone);
          }
        });
      }
    },
    yuyingetdetail() {
      this.tableDatatop.forEach((item, index) => {
@@ -1631,6 +1708,19 @@
  background-color: #f57676;
  border-color: #f57676;
}
.el-icon-phone {
  transition: all 0.3s;
}
.el-button[disabled] .el-icon-phone {
  color: #c0c4cc;
}
.el-button:not([disabled]) .el-icon-phone {
  color: #409eff;
}
.el-button:not([disabled]):hover .el-icon-phone {
  color: #66b1ff;
  transform: scale(1.1);
}
.mulsz {
  font-size: 25px;
  margin-top: 20px;