From 7449ee9bca84c18944e65592ac8ea33a7c191639 Mon Sep 17 00:00:00 2001
From: WXL <1785969728@qq.com>
Date: 星期二, 22 七月 2025 18:29:00 +0800
Subject: [PATCH] 测试完成

---
 src/views/followvisit/record/detailpage/index.vue |  134 ++++++++++++++++++++++++++++++++++++++++----
 1 files changed, 120 insertions(+), 14 deletions(-)

diff --git a/src/views/followvisit/record/detailpage/index.vue b/src/views/followvisit/record/detailpage/index.vue
index 1cd807e..855b8c3 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"
@@ -352,6 +371,14 @@
           </el-collapse-item>
         </el-collapse>
       </div>
+    </div>
+    <div>
+      <h2>涓�閿懠鍙姛鑳�</h2>
+      <CallButton
+        ref="callButton"
+        :phoneNumber="currentPhoneNumber"
+        style="display: none"
+      />
     </div>
     <div>
       <el-tabs v-model="activeName" type="border-card">
@@ -680,7 +707,7 @@
                 allow-create
                 default-first-option
                 @change="visitChange"
-                placeholder="璇烽�夋嫨闅忚鏂瑰紡"
+                placeholder="璇烽�夋嫨闅忚鏂瑰紡(渚濆嚭闄㈡椂闂存妧璁$畻)"
               >
                 <el-option
                   v-for="item in options"
@@ -700,6 +727,7 @@
                 :picker-options="pickerOptions"
                 align="right"
                 v-model="form.date1"
+                class="custom-disabled"
               ></el-date-picker>
             </el-form-item>
           </el-col>
@@ -744,11 +772,30 @@
   alterpatient,
   listcontactinformation,
 } from "@/api/patient/homepage";
+import CallButton from "@/components/CallButton";
 export default {
+  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: "",
@@ -766,6 +813,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: {
@@ -802,6 +853,10 @@
         },
       },
       pickerOptions: {
+        disabledDate(time) {
+        // 绂佺敤浠婂ぉ鍙婁箣鍓嶇殑鏃ユ湡
+        return time.getTime() < Date.now() - 24 * 60 * 60 * 1000;
+      },
         shortcuts: [
           {
             text: "涓冨ぉ鍚�",
@@ -988,17 +1043,29 @@
       // 鏍规嵁閫夋嫨鐨勯殢璁挎柟寮忚缃椂闂�
       const now = new Date();
       if (value.includes("涓冨ぉ鍚�")) {
-        this.form.date1 = new Date(now.getTime() + 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(now.getTime() + 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(now.getTime() + 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(now.getTime() + 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(now.getTime() + 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(now.getTime() + 3600 * 1000 * 24 * 365);
+        this.form.date1 = new Date(
+          Date.parse(this.form.endtime) + 3600 * 1000 * 24 * 365
+        );
       }
     },
 
@@ -1132,10 +1199,10 @@
                     path: "/logisticsservice/record",
                   });
                 }
-              } else if (form.serviceType == 2) {
+              } else if (this.form.serviceType == 2) {
                 if (this.visitCount) {
                   this.$router.push({
-                    path: "/followvisit/again",
+                    path: "/logisticsservice/again",
                   });
                 } else {
                   this.$router.push({
@@ -1149,6 +1216,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) => {
@@ -1195,7 +1285,7 @@
             })
             .catch(() => {
               if (this.form.serviceType == 13) {
-                if (this.visitCount) {
+                if (this.visitCount!=1) {
                   this.$router.push({
                     path: "/logisticsservice/zbAgain",
                   });
@@ -1205,7 +1295,7 @@
                   });
                 }
               } else if (form.serviceType == 2) {
-                if (this.visitCount) {
+                if (this.visitCount!=1) {
                   this.$router.push({
                     path: "/followvisit/again",
                   });
@@ -1241,6 +1331,8 @@
           this.form = res.rows[0].serviceSubtaskList.find(
             (item) => item.id == this.id
           );
+          console.log(this.form.serviceType,'serviceType');
+
           this.logsheetlist = res.rows[0].serviceSubtaskList;
           this.templateid = this.logsheetlist[0].templateid;
           const targetDate = new Date(this.form.longSendTime); // 鐩爣鏃ユ湡
@@ -1397,7 +1489,6 @@
           form.finishtime = "";
           if (form.resource) {
             if (form.resource == 2) {
-              form.serviceType = 13;
               form.visitDeptCode = localStorage.getItem("deptCode");
               form.visitDeptName = "闅忚涓績";
             } else {
@@ -1410,6 +1501,8 @@
           }
           // form.id = null;
           form.sendstate = 2;
+          console.log(form.serviceType,'form.serviceType');
+
           addserviceSubtask(form).then((res) => {
             if (res.code == 200) {
               this.$modal.msgSuccess("鍒涘缓鎴愬姛");
@@ -1419,7 +1512,7 @@
                 });
               } else if (form.serviceType == 2) {
                 this.$router.push({
-                  path: "/followvisit/again",
+                  path: "/logisticsservice/again",
                 });
               }
             } else {
@@ -1623,6 +1716,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