From d412b5bcb0b293f70c8a6ed82bce06e12e222db9 Mon Sep 17 00:00:00 2001
From: WXL (wul) <wl_5969728@163.com>
Date: 星期二, 21 十月 2025 09:08:23 +0800
Subject: [PATCH] 问卷联调

---
 src/views/followvisit/record/detailpage/index.vue |  420 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++---
 1 files changed, 398 insertions(+), 22 deletions(-)

diff --git a/src/views/followvisit/record/detailpage/index.vue b/src/views/followvisit/record/detailpage/index.vue
index d8aeda4..9fd2622 100644
--- a/src/views/followvisit/record/detailpage/index.vue
+++ b/src/views/followvisit/record/detailpage/index.vue
@@ -52,6 +52,7 @@
         <el-table
           :data="logsheetlist"
           :row-class-name="tableRowClassName"
+          :max-height="350"
           style="width: 100%"
           @selection-change="handleSelectionChange"
         >
@@ -254,6 +255,7 @@
       />
     </el-dialog>
     <div class="action-container">
+      <!-- 闅忚鍐呭 -->
       <div class="call-action">
         <div class="call-container">
           <!-- <div class="call-header">
@@ -300,7 +302,7 @@
                               handleOptionChange(
                                 $event,
                                 index,
-                                item.svyLibTemplateTargetoptions,
+                                item.svyTaskTemplateTargetoptions,
                                 item
                               )
                             "
@@ -308,7 +310,7 @@
                             <el-radio
                               v-for="(
                                 items, indexs
-                              ) in item.svyLibTemplateTargetoptions"
+                              ) in item.svyTaskTemplateTargetoptions"
                               :class="items.isabnormal ? 'red-star' : ''"
                               :key="indexs"
                               :label="items.optioncontent"
@@ -358,7 +360,7 @@
                               @change="$forceUpdate()"
                               v-for="(
                                 items, indexs
-                              ) in item.svyLibTemplateTargetoptions"
+                              ) in item.svyTaskTemplateTargetoptions"
                               :key="indexs"
                               :label="items.optioncontent"
                             >
@@ -549,6 +551,7 @@
           </div>
         </div>
       </div>
+      <!-- 浜哄伐澶勭悊 -->
       <div class="manual-action">
         <div class="Followuserinfos">
           <div>
@@ -685,10 +688,24 @@
                   />
                 </div>
               </div>
-              <el-form-item label="闅忚璁板綍">
+              <el-form-item label="闅忚鍐呭" v-if="orgname == '涓芥按甯備腑鍖婚櫌'">
+                <el-input type="textarea" v-model="form.remark"></el-input>
+              </el-form-item>
+              <el-form-item label="闅忚璁板綍" v-else>
                 <el-input type="textarea" v-model="form.remark"></el-input>
               </el-form-item>
 
+              <el-form-item label="闅忚鎯呭喌" v-if="orgname == '涓芥按甯備腑鍖婚櫌'">
+                <el-radio-group v-model="form.taskSituation">
+                  <el-radio
+                    v-for="city in cities"
+                    :label="city.value"
+                    :value="city.value"
+                    :key="city.value"
+                    >{{ city.label }}</el-radio
+                  >
+                </el-radio-group>
+              </el-form-item>
               <el-form-item label="澶勭悊鎰忚">
                 <div>
                   <el-button
@@ -712,6 +729,9 @@
                   <el-button plain type="info" @click="Editsingletaskson('5')"
                     >涓績闅忚</el-button
                   >
+                  <el-button type="primary" round @click="sendAgainmsg"
+                    >鐭俊鍙戦��</el-button
+                  >
                 </div>
               </el-form-item>
             </el-form>
@@ -731,6 +751,24 @@
                 </el-row>
                 <el-row :gutter="20">
                   <el-col :span="12"
+                    ><el-form-item label="鎬у埆" prop="telcode">
+                      <el-select v-model="userform.sex" placeholder="璇烽�夋嫨">
+                        <el-option label="鐢�" :value="1"> </el-option>
+                        <el-option label="濂�" :value="2"> </el-option>
+                      </el-select> </el-form-item
+                  ></el-col>
+                  <el-col :span="12">
+                    <el-form-item label="骞撮緞" prop="name">
+                      <el-input
+                        v-model="userform.age"
+                        placeholder="璇疯緭鍏ュ鍚�"
+                        maxlength="20"
+                      ></el-input> </el-form-item
+                  ></el-col>
+                </el-row>
+
+                <el-row :gutter="20">
+                  <el-col :span="12"
                     ><el-form-item label="鑱旂郴鏂瑰紡" prop="telcode">
                       <el-input
                         v-model="userform.telcode"
@@ -744,6 +782,16 @@
                         v-model="userform.relativetelcode"
                         placeholder="璇疯緭鍏ュ鍚�"
                         maxlength="20"
+                      ></el-input> </el-form-item
+                  ></el-col>
+                </el-row>
+                <el-row :gutter="20">
+                  <el-col :span="24">
+                    <el-form-item label="璇婃柇鍚嶇О" prop="name">
+                      <el-input
+                        v-model="form.leavediagname"
+                        placeholder="璇疯緭鍏ヨ瘖鏂�"
+                        maxlength="50"
                       ></el-input> </el-form-item
                   ></el-col>
                 </el-row>
@@ -773,7 +821,53 @@
         </div>
       </div>
     </div>
-
+    <!-- 鐭俊鍙戦�佸璇濇 -->
+    <el-dialog title="鐭俊鍙戦��" :visible.sync="smsDialogVisible">
+      <!-- 娉ㄦ剰杩欓噷浣跨敤浜� smsDialogVisible 浠ュ尯鍒嗗凡鏈夌殑 dialogFormVisible -->
+      <el-form ref="smsForm" :model="form" label-width="80px">
+        <el-form-item label="鎮h�呭悕绉�">
+          <el-input
+            style="width: 400px"
+            disabled
+            v-model="form.sendname"
+          ></el-input>
+        </el-form-item>
+        <el-form-item label="骞撮緞">
+          <el-input style="width: 400px" disabled v-model="form.age"></el-input>
+        </el-form-item>
+        <el-form-item label="鐢佃瘽">
+          <el-input
+            style="width: 400px"
+            disabled
+            v-model="userform.telcode"
+          ></el-input>
+          <!-- 娉ㄦ剰杩欓噷鍙兘浣跨敤 userform.telcode -->
+        </el-form-item>
+        <el-form-item label="绉戝">
+          <el-input
+            style="width: 400px"
+            disabled
+            v-model="form.deptname"
+          ></el-input>
+        </el-form-item>
+        <el-form-item label="鐥呭尯">
+          <el-input
+            style="width: 400px"
+            disabled
+            v-model="form.leavehospitaldistrictname"
+          ></el-input>
+        </el-form-item>
+        <el-form-item label="鐭俊鍐呭">
+          <el-input type="textarea" v-model="smsContent"></el-input>
+          <!-- 寤鸿浣跨敤鐙珛鐨� smsContent 鍙橀噺 -->
+        </el-form-item>
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button @click="smsDialogVisible = false">鍙� 娑�</el-button>
+        <el-button type="primary" @click="sendSms">纭鍙戦��</el-button>
+        <!-- 娉ㄦ剰鏂规硶鍚嶆敼涓� sendSms -->
+      </div>
+    </el-dialog>
     <el-dialog
       title="鎮h�呭啀娆¢殢璁�"
       v-dialogDrags
@@ -919,6 +1013,18 @@
         <el-button type="primary" @click="setupsubtask">纭鍒涘缓鏈嶅姟</el-button>
       </div>
     </el-dialog>
+    <div class="main-content" v-if="orgname == '鏅畞鐣叉棌鑷不鍘夸汉姘戝尰闄�'">
+      <!-- <el-button @click="CaldialogVisible = true">鎵撳紑寮规</el-button> -->
+
+      <!-- 寮规璋冪敤 -->
+      <el-dialog
+        title="鍛煎彨鍔熻兘妗�"
+        :visible.sync="CaldialogVisible"
+        width="60%"
+      >
+        <CallCenterLs ref="callCenterModal" :initial-phone="currentPhoneNumber" />
+      </el-dialog>
+    </div>
   </div>
 </template>
 
@@ -935,6 +1041,7 @@
   updatePersonVoices,
   addPersonVoices,
   query360PatInfo,
+  sendMsg,
 } from "@/api/AiCentre/index";
 import {
   messagelistpatient,
@@ -943,10 +1050,12 @@
 } from "@/api/patient/homepage";
 import CallButton from "@/components/CallButton";
 import MergeAndModify from "./MergeAndModify.vue";
+import CallCenterLs from "@/components/CallCenterLs";
 export default {
   components: {
     CallButton,
     MergeAndModify,
+    CallCenterLs,
   },
   directives: {
     numericOnly: {
@@ -1030,6 +1139,7 @@
       // 宸叉湁鏁版嵁...
       callStatus: "idle", // idle, calling, connected, ended, failed
       isEndingCall: false,
+      CaldialogVisible: false,
       currentCall: null, // 褰撳墠閫氳瘽瀵硅薄
       input: "浠婂ぉ韬綋杩樹笉閿�",
       radio: "2",
@@ -1038,8 +1148,35 @@
       voice: "",
       templateid: "",
       again: "",
+      orgname: "",
       zcform: {},
       form: {},
+      cities: [
+        {
+          label: "姝e父璇煶",
+          value: "1",
+        },
+        {
+          label: "鎮h�呮嫆鎺ユ垨鎷掕",
+          value: "2",
+        },
+        {
+          label: "闈㈣鎴栬�呮帴璇�",
+          value: "3",
+        },
+        {
+          label: "寰俊闅忚",
+          value: "4",
+        },
+        {
+          label: "闅忚鐢佃瘽涓嶆纭�",
+          value: "5",
+        },
+        {
+          label: "鍏朵粬鎯呭喌涓嶅疁闅忚",
+          value: "6",
+        },
+      ],
       tableDatatop: [], //棰樼洰琛�
       voiceDatatop: [], //棰樼洰琛�
       dynamicTags: [],
@@ -1106,8 +1243,8 @@
           YongHuXX: {
             XiTongID: "SUIFANGXT",
             XiTongMC: "闅忚绯荤粺",
-            YongHuID: "1400466972205912064",
-            YongHuXM: "JNRMYY",
+            YongHuID: localStorage.getItem("YongHuID"),
+            YongHuXM: localStorage.getItem("YongHuXM"),
             ZuZhiJGID: localStorage.getItem("orgid"),
             ZuZhiJGMC: localStorage.getItem("orgname"),
             idp: "lyra",
@@ -1197,6 +1334,8 @@
         },
       ],
       userform: {},
+      smsDialogVisible: false, // 鎺у埗鐭俊瀵硅瘽妗嗘樉绀�
+      smsContent: "", // 瀛樺偍鐭俊鍐呭
       Whetherall: true, //鏄惁鍏ㄩ儴璁板綍灞曠ず
       dialogFormVisible: false,
       Voicetype: 0, //鏄惁涓鸿闊虫湇鍔�
@@ -1241,6 +1380,7 @@
     this.Voicetype = this.$route.query.Voicetype;
     this.visitCount = this.$route.query.visitCount;
     this.serviceType = this.$route.query.serviceType;
+    this.orgname = localStorage.getItem("orgname");
 
     this.getTaskservelist();
   },
@@ -1285,13 +1425,10 @@
     },
     //鎮h��360璺宠浆
     gettoken360(sfzh, drcode, drname) {
-      this.$modal.msgWarning("360鍔熻兘鏆傛湭寮�閫�");
-      return; // 闃绘鍚庣画浠g爜鎵ц
+      // this.$modal.msgWarning("360鍔熻兘鏆傛湭寮�閫�");
+
       this.postData.YeWuXX.BingRenXX.ZhengJianHM = sfzh;
-      if (this.postData.XiaoXiTou.ZuHuMC == "涓芥按甯備腑鍖婚櫌") {
-        this.postData.YeWuXX.YongHuXX.YongHuID = "1400398571877961728";
-        this.postData.YeWuXX.YongHuXX.YongHuXM = "LSZYY";
-      }
+
       query360PatInfo(this.postData).then((res) => {
         if (res.data.url) {
           window.open(res.data.url, "_blank");
@@ -1419,7 +1556,7 @@
             return;
           }
         }
-        var objs = item.svyLibTemplateTargetoptions.find(
+        var objs = item.svyTaskTemplateTargetoptions.find(
           (items) => items.optioncontent == item.scriptResult
         );
         if (obj) {
@@ -1551,8 +1688,13 @@
         this.$message.error("璇疯緭鍏ユ纭殑鎵嬫満鍙风爜");
         return;
       }
-
       this.currentPhoneNumber = phone;
+      // 鍛煎彨鍒ゆ柇
+      if (this.orgname == "鏅畞鐣叉棌鑷不鍘夸汉姘戝尰闄�") {
+        this.CaldialogVisible = true;
+        return
+      }
+
       this.callType = type;
       this.callStatus = "calling";
 
@@ -1599,7 +1741,10 @@
       }, 3000);
     },
     yuyingetdetail() {
-      this.tableDatatop.forEach((item, index) => {
+      const dataToSubmit = JSON.parse(JSON.stringify(this.tableDatatop));
+
+      dataToSubmit.forEach((item, index) => {
+        // 瀵规嫹璐濈殑鏁版嵁杩涜鎿嶄綔锛屼笉褰卞搷鍘熷鐨� scriptResult 鏁扮粍
         item.scriptResult = item.scriptResult.join("&");
         item.templatequestionnum = index + 1;
         item.subId = this.id;
@@ -1611,8 +1756,9 @@
         item.patid = this.patid;
         item.templateid = item.templateID;
       });
+
       let obj = {
-        serviceSubtaskDetailList: this.tableDatatop,
+        serviceSubtaskDetailList: dataToSubmit, // 鎻愪氦澶勭悊鍚庣殑鍓湰
         param1: this.taskid,
         param2: this.patid,
         subId: this.id,
@@ -1684,16 +1830,17 @@
       getTaskservelist({
         patid: this.patid,
         subId: id,
+        pageSize: 100,
       }).then((res) => {
         if (res.code == 200) {
           this.form = res.rows[0].serviceSubtaskList.find(
             (item) => item.id == this.id
           );
-          console.log(this.form.serviceType, "serviceType");
+          console.log(this.form, "serviceType");
 
           this.logsheetlist = res.rows[0].serviceSubtaskList;
-          this.templateid = this.logsheetlist[0].templateid;
-          this.selectedTag = this.logsheetlist[0].excep;
+          this.templateid = this.form.templateid;
+          this.selectedTag = this.form.excep;
           const targetDate = new Date(this.form.longSendTime); // 鐩爣鏃ユ湡
           const now = new Date(); // 褰撳墠鏃堕棿
           if (now < targetDate && this.form.sendstate == 2) {
@@ -1713,6 +1860,34 @@
           this.getsearchrResults();
         }
       });
+    },
+    // 璋冭捣鐭俊鍙戦�佸璇濇
+    sendAgainmsg() {
+      this.smsDialogVisible = true;
+      // 鍙互鍦ㄨ繖閲屽垵濮嬪寲 smsContent锛屼緥濡� this.smsContent = '';
+    },
+
+    // 鍙戦�佺煭淇$殑鏂规硶
+    sendSms() {
+      // 杩欓噷璋冪敤浣犵殑鐭俊鍙戦�� API
+      // 鍋囪 API 涓� sendMsg锛屽弬鏁板彲鑳介渶瑕佹牴鎹疄闄呮儏鍐佃皟鏁�
+      sendMsg({
+        phone: this.userform.telcode, // 纭繚鐢佃瘽鍙风爜瀛楁姝g‘
+        content: this.smsContent,
+      })
+        .then((res) => {
+          if (res.code == 200) {
+            this.$modal.msgSuccess("鍙戦�佹垚鍔�");
+            this.smsDialogVisible = false; // 鍏抽棴瀵硅瘽妗�
+            this.smsContent = ""; // 娓呯┖鍐呭
+          } else {
+            this.$modal.msgError("鍙戦�佸け璐�");
+          }
+        })
+        .catch((error) => {
+          console.error("鍙戦�佺煭淇″け璐�:", error);
+          this.$modal.msgError("鍙戦�佸け璐�");
+        });
     },
     Editsingletaskson(son) {
       let objson = {};
@@ -1743,6 +1918,7 @@
             (item) => item.id == this.id
           );
           objson.remark = this.form.remark;
+          objson.taskSituation = this.form.taskSituation;
           objson.excep = this.selectedTag;
           if (sendstate) objson.sendstate = sendstate;
           Editsingletaskson(objson).then((res) => {
@@ -1835,7 +2011,7 @@
           (item) => item.optioncontent == a
         );
       } else {
-        var obj = this.tableDatatop[b].svyLibTemplateTargetoptions.find(
+        var obj = this.tableDatatop[b].svyTaskTemplateTargetoptions.find(
           (item) => item.optioncontent == a
         );
       }
@@ -1940,7 +2116,7 @@
     },
     overdata() {
       this.tableDatatop.forEach((item, index) => {
-        var obj = item.svyLibTemplateTargetoptions.find(
+        var obj = item.svyTaskTemplateTargetoptions.find(
           (items) => items.optioncontent == item.scriptResult
         );
         if (obj) {
@@ -2070,6 +2246,16 @@
       this.getTaskservelist();
     },
   },
+  // deactivated() {
+  //   console.log(11);
+  // },
+  beforeRouteLeave(to, from, next) {
+    this.$refs.callButton.cleanupResources();
+    next(); // 纭繚璋冪敤 nex
+  },
+  // beforeRouteUpdate() {
+  //   console.log(33);
+  // },
 };
 </script>
 
@@ -2453,4 +2639,194 @@
   color: #080808 !important;
   cursor: not-allowed;
 }
+/* 鍘熸湁鐨勬牱寮忎繚鎸佷笉鍙橈紝娣诲姞浠ヤ笅鍝嶅簲寮忎唬鐮� */
+
+.Followupdetailspage {
+  margin: 10px;
+  display: flex;
+  flex-direction: column;
+  gap: 20px;
+}
+
+.action-container {
+  display: flex;
+  flex-direction: row; /* 榛樿妯悜鎺掑垪 */
+  gap: 20px;
+  margin: 0 10px 20px 10px;
+
+  /* 褰撶缉鏀炬瘮渚嬪ぇ浜�100%鎴栧睆骞曞搴﹁緝灏忔椂鏀逛负涓婁笅鎺掑垪 */
+  @media screen and (max-width: 1200px), (min-resolution: 1dppx) {
+    flex-direction: column;
+
+    .call-action,
+    .manual-action {
+      width: 100% !important;
+    }
+  }
+}
+
+.call-action {
+  width: 65%;
+  min-width: 0;
+}
+
+.manual-action {
+  flex: 1;
+  min-width: 0;
+}
+
+/* 璋冩暣鍐呴儴鍏冪礌鐨勫搷搴斿紡甯冨眬 */
+.Followuserinfos {
+  .el-form {
+    /* 琛ㄥ崟鍝嶅簲寮忚皟鏁� */
+    .el-row {
+      margin: 0 -10px;
+    }
+
+    .el-col {
+      padding: 0 10px;
+    }
+
+    @media screen and (max-width: 768px) {
+      .el-col {
+        width: 100%;
+        margin-bottom: 15px;
+
+        &:last-child {
+          margin-bottom: 0;
+        }
+      }
+    }
+  }
+}
+
+/* 璋冩暣琛ㄦ牸鐨勫搷搴斿紡琛ㄧ幇 */
+.el-table {
+  ::v-deep .el-table__body-wrapper {
+    overflow-x: auto;
+  }
+
+  /* 鍦ㄥ皬灞忓箷涓婅皟鏁磋〃鏍煎垪瀹� */
+  @media screen and (max-width: 992px) {
+    .el-table-column {
+      min-width: 120px;
+    }
+  }
+}
+
+/* 璋冩暣鏍囩閫夋嫨鍣ㄧ殑鍝嶅簲寮忓竷灞� */
+.tag-selector-container {
+  display: flex;
+  align-items: center;
+  flex-wrap: wrap;
+  gap: 10px;
+
+  @media screen and (max-width: 576px) {
+    flex-direction: column;
+    align-items: flex-start;
+
+    .el-select {
+      width: 100%;
+      margin-right: 0 !important;
+    }
+  }
+}
+
+/* 璋冩暣鎸夐挳缁勭殑鍝嶅簲寮忓竷灞� */
+.el-form-item.label-processing-opinion {
+  .el-button-group {
+    display: flex;
+    flex-wrap: wrap;
+    gap: 10px;
+
+    .el-button {
+      flex: 1;
+      min-width: 120px;
+    }
+  }
+}
+
+/* 璋冩暣閫夐」鍗$殑鍝嶅簲寮忚〃鐜� */
+.el-tabs {
+  ::v-deep .el-tabs__nav-wrap {
+    overflow-x: auto;
+    white-space: nowrap;
+
+    &::after {
+      display: none;
+    }
+  }
+}
+
+/* 璋冩暣棰勮鍖哄煙鐨勫搷搴斿紡琛ㄧ幇 */
+.preview-left {
+  @media screen and (max-width: 768px) {
+    margin: 10px;
+    padding: 15px;
+
+    .topic-dev,
+    .scriptTopic-dev {
+      margin-bottom: 15px;
+    }
+  }
+}
+
+/* 璋冩暣瀵硅瘽妗嗙殑鍝嶅簲寮忚〃鐜� */
+.el-dialog {
+  @media screen and (max-width: 992px) {
+    width: 90% !important;
+    margin-top: 5vh !important;
+
+    .el-dialog__body {
+      padding: 15px;
+    }
+  }
+
+  @media screen and (max-width: 576px) {
+    width: 95% !important;
+
+    .el-form-item {
+      margin-bottom: 15px;
+    }
+  }
+}
+
+/* 纭繚鍐呭鍦ㄧ缉鏀炬椂淇濇寔鍙鎬� */
+.headline {
+  font-size: clamp(18px, 2vw, 24px); /* 浣跨敤clamp鍑芥暟纭繚瀛椾綋澶у皬鍦ㄥ悎鐞嗚寖鍥村唴 */
+}
+
+/* 涓虹Щ鍔ㄨ澶囦紭鍖栨粴鍔ㄤ綋楠� */
+@media screen and (max-width: 768px) {
+  .Followuserinfo,
+  .Followuserinfos {
+    padding: 15px;
+    margin: 5px;
+  }
+
+  .CONTENT {
+    min-height: auto;
+    padding: 5px;
+  }
+}
+
+/* 缂╂斁妫�娴嬫牱寮� */
+@media screen and (min-resolution: 1.1dppx),
+  screen and (-webkit-min-device-pixel-ratio: 1.1),
+  screen and (max-width: 1200px) {
+  .action-container {
+    flex-direction: column;
+  }
+
+  .call-action,
+  .manual-action {
+    width: 100%;
+  }
+
+  /* 璋冩暣鍐呴儴鍏冪礌闂磋窛 */
+  .call-container,
+  .Followuserinfos {
+    margin-bottom: 20px;
+  }
+}
 </style>

--
Gitblit v1.9.3