From 96681523c5bc39840abf9d73cd585044568d5aad Mon Sep 17 00:00:00 2001
From: WXL <1785969728@qq.com>
Date: 星期一, 14 七月 2025 11:43:04 +0800
Subject: [PATCH] 测试完成
---
src/views/followvisit/record/detailpage/index.vue | 106 ++++++++++++++++++++++++++++++++--
src/components/CallButton/index.vue | 16 +++-
2 files changed, 109 insertions(+), 13 deletions(-)
diff --git a/src/components/CallButton/index.vue b/src/components/CallButton/index.vue
index 42a98b7..51a4995 100644
--- a/src/components/CallButton/index.vue
+++ b/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);
diff --git a/src/views/followvisit/record/detailpage/index.vue b/src/views/followvisit/record/detailpage/index.vue
index e911dcb..c6b50f5 100644
--- a/src/views/followvisit/record/detailpage/index.vue
+++ b/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;
+
+ // 绛夊緟涓嬩竴涓猼ick纭繚鍊煎凡鏇存柊
+ this.$nextTick(() => {
+ this.$refs.callButton.startCall();
+
+ // 鍙�夛細鏍规嵁涓嶅悓绫诲瀷鍋氫笉鍚屽鐞�
+ if (type === "tel") {
+ console.log("姝e湪鍛煎彨鎮h�呮湰浜�:", phone);
+ } else {
+ console.log("姝e湪鍛煎彨鑱旂郴浜�:", 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;
--
Gitblit v1.9.3