|  |  | 
 |  |  |       </div> | 
 |  |  |       <div> | 
 |  |  |         <el-table :data="logsheetlist" style="width: 100%"> | 
 |  |  |           <el-table-column prop="sendname" align="center" label="姓名"> | 
 |  |  |           <el-table-column | 
 |  |  |             prop="sendname" | 
 |  |  |             align="center" | 
 |  |  |             label="姓名" | 
 |  |  |             width="100" | 
 |  |  |           > | 
 |  |  |           </el-table-column> | 
 |  |  |           <el-table-column | 
 |  |  |             prop="taskName" | 
 |  |  | 
 |  |  |           <el-table-column | 
 |  |  |             prop="finishtime" | 
 |  |  |             align="center" | 
 |  |  |             label="完成时间" | 
 |  |  |             label="随访完成时间" | 
 |  |  |             width="200" | 
 |  |  |             show-overflow-tooltip | 
 |  |  |           > | 
 |  |  | 
 |  |  |             show-overflow-tooltip | 
 |  |  |           > | 
 |  |  |           </el-table-column> | 
 |  |  |           <el-table-column | 
 |  |  |             prop="remark" | 
 |  |  |             align="center" | 
 |  |  |             label="服务记录" | 
 |  |  |             width="200" | 
 |  |  |             show-overflow-tooltip | 
 |  |  |           > | 
 |  |  |           </el-table-column> | 
 |  |  |  | 
 |  |  |           <el-table-column | 
 |  |  |             prop="bankcardno" | 
 |  |  | 
 |  |  |         </el-table> | 
 |  |  |       </div> | 
 |  |  |     </div> | 
 |  |  |     <div :class="form.serviceType == 2 ? 'Followuserinfo' : 'Followuserinfos'"> | 
 |  |  |     <div class="Followuserinfos"> | 
 |  |  |       <div> | 
 |  |  |         <el-form ref="form" :model="form" label-width="120px"> | 
 |  |  |           <div class="headline"> | 
 |  |  | 
 |  |  |               <el-col :span="12" | 
 |  |  |                 ><el-form-item label="联系电话"> | 
 |  |  |                   <el-input | 
 |  |  |                     disabled | 
 |  |  |                     placeholder="联系电话缺失" | 
 |  |  |                     v-model="userform.telcode" | 
 |  |  |                   ></el-input> </el-form-item | 
 |  |  | 
 |  |  |               <el-col :span="12" | 
 |  |  |                 ><el-form-item label="联系人电话"> | 
 |  |  |                   <el-input | 
 |  |  |                     disabled | 
 |  |  |                     placeholder="联系人电话缺失" | 
 |  |  |                     v-model="userform.relativetelcode" | 
 |  |  |                   ></el-input> </el-form-item | 
 |  |  |               ></el-col> | 
 |  |  |             </el-row> | 
 |  |  |             <!-- <div style="margin-left: 30px"> | 
 |  |  |             <el-button type="warning">一键呼叫</el-button> | 
 |  |  |           </div> --> | 
 |  |  |             <div style="margin-left: 30px"> | 
 |  |  |               <el-button type="primary" plain @click="Editsingletasksonyic('')" | 
 |  |  |                 >保存服务</el-button | 
 |  |  |               > | 
 |  |  |             </div> | 
 |  |  |           </div> | 
 |  |  |  | 
 |  |  |           <el-form-item label="随访记录"> | 
 |  |  | 
 |  |  |                       /> </el-form-item | 
 |  |  |                   ></el-col> | 
 |  |  |                 </el-row> | 
 |  |  |                 <el-row :gutter="20"> | 
 |  |  |                 <!-- <el-row :gutter="20"> | 
 |  |  |                   <el-col :span="24"> | 
 |  |  |                     <el-form-item label="标签" prop="desc"> | 
 |  |  |                       <div class="xinz-inf"> | 
 |  |  | 
 |  |  |                       </div> | 
 |  |  |                     </el-form-item> | 
 |  |  |                   </el-col> | 
 |  |  |                 </el-row> | 
 |  |  |                 </el-row> --> | 
 |  |  |               </el-form> | 
 |  |  |             </div> | 
 |  |  |           </el-collapse-item> | 
 |  |  |         </el-collapse> | 
 |  |  |       </div> | 
 |  |  |     </div> | 
 |  |  |     <div v-if="form.serviceType == 2"> | 
 |  |  |     <div> | 
 |  |  |       <el-tabs v-model="activeName" type="border-card"> | 
 |  |  |         <el-tab-pane name="wj"> | 
 |  |  |           <span class="mulsz" slot="label" | 
 |  |  | 
 |  |  |             <div class="title">{{ taskname ? taskname : "问卷" }}</div> | 
 |  |  |  | 
 |  |  |             <div class="preview-left" v-if="!Voicetype"> | 
 |  |  |               <!-- 单选 --> | 
 |  |  |               <div | 
 |  |  |                 class="topic-dev" | 
 |  |  |                 v-for="(item, index) in tableDatatop" | 
 |  |  |                 :key="item.id" | 
 |  |  |               > | 
 |  |  |                 <!-- 单选 --> | 
 |  |  |                 <div | 
 |  |  |                   :class=" | 
 |  |  |                     item.isabnormal | 
 |  |  | 
 |  |  |       </el-tabs> | 
 |  |  |     </div> | 
 |  |  |     <el-dialog title="患者再次随访" :visible.sync="dialogFormVisible"> | 
 |  |  |       <el-form ref="form" :model="form" label-width="80px"> | 
 |  |  |       <el-form ref="zcform" :rules="zcrules" :model="form" label-width="80px"> | 
 |  |  |         <el-form-item label="任务名称"> | 
 |  |  |           <el-input | 
 |  |  |             style="width: 400px" | 
 |  |  | 
 |  |  |             v-model="form.leavehospitaldistrictname" | 
 |  |  |           ></el-input> | 
 |  |  |         </el-form-item> | 
 |  |  |         <el-form-item label="出院时间"> | 
 |  |  |           <el-input | 
 |  |  |             style="width: 400px" | 
 |  |  |             disabled | 
 |  |  |             v-model="form.endtime" | 
 |  |  |           ></el-input> | 
 |  |  |         </el-form-item> | 
 |  |  |  | 
 |  |  |         <el-form-item label="随访方式"> | 
 |  |  |         <el-form-item label="随访方式" prop="resource"> | 
 |  |  |           <el-radio-group v-model="form.resource"> | 
 |  |  |             <el-radio label="1">本病区随访</el-radio> | 
 |  |  |             <el-radio label="2">随访中心随访</el-radio> | 
 |  |  | 
 |  |  |         <!-- <el-form-item label="即刻发送"> | 
 |  |  |           <el-switch v-model="zcform.delivery"></el-switch> | 
 |  |  |         </el-form-item> --> | 
 |  |  |         <el-form-item label="随访时间"> | 
 |  |  |         <el-form-item label="随访时间" prop="date1"> | 
 |  |  |           <el-date-picker | 
 |  |  |             type="date" | 
 |  |  |             placeholder="选择日期" | 
 |  |  | 
 |  |  |   updatePersonVoices, | 
 |  |  |   addPersonVoices, | 
 |  |  | } from "@/api/AiCentre/index"; | 
 |  |  | import { messagelistpatient } from "@/api/patient/homepage"; | 
 |  |  | import { messagelistpatient, alterpatient } from "@/api/patient/homepage"; | 
 |  |  | export default { | 
 |  |  |   dicts: ["sys_normal_disable", "sys_user_sex", "sys_yujing", "sys_suggest"], | 
 |  |  |   data() { | 
 |  |  | 
 |  |  |       tableDatatop: [], //题目表 | 
 |  |  |       voiceDatatop: [], //题目表 | 
 |  |  |       dynamicTags: [], | 
 |  |  |  | 
 |  |  |       zcrules: { | 
 |  |  |         date1: [ | 
 |  |  |           { required: true, message: "请选择随访方式", trigger: "change" }, | 
 |  |  |         ], | 
 |  |  |         resource: [ | 
 |  |  |           { required: true, message: "请选择随访时间", trigger: "blur" }, | 
 |  |  |         ], | 
 |  |  |       }, | 
 |  |  |       userform: {}, | 
 |  |  |       Whetherall: false, //是否全部记录展示 | 
 |  |  |       dialogFormVisible: false, | 
 |  |  | 
 |  |  |     this.patid = this.$route.query.patid; | 
 |  |  |     this.Voicetype = this.$route.query.Voicetype; | 
 |  |  |     this.serviceType = this.$route.query.serviceType; | 
 |  |  |     console.log(this.id, this.patid); | 
 |  |  |  | 
 |  |  |     this.getTaskservelist(this.id); | 
 |  |  |   }, | 
 |  |  | 
 |  |  |         isFinish: false, | 
 |  |  |       }).then((res) => { | 
 |  |  |         if (res.code === 200) { | 
 |  |  |           this.tableDatatop = res.data.scriptResult.script; | 
 |  |  |           this.tableDatatop = res.data.scriptResult; | 
 |  |  |           this.tableDatatop.forEach((item) => { | 
 |  |  |             console.log(item.scriptResultId, "scriptResultId"); | 
 |  |  |  | 
 |  |  |             if (item.scriptResultId && item.scriptType != 2) { | 
 |  |  |             if (item.scriptType == 2) item.scriptResult = []; | 
 |  |  |             if (item.scriptResult && item.scriptType != 2) { | 
 |  |  |               item.isoption = 3; | 
 |  |  |               item.scriptResult = item.scriptResult; | 
 |  |  |             } else if (item.scriptResultId && item.scriptType == 2) { | 
 |  |  |             } else if (item.scriptResult && item.scriptType == 2) { | 
 |  |  |               item.scriptResult = item.scriptResult.split("&"); | 
 |  |  |               item.isoption = 3; | 
 |  |  |             } | 
 |  |  | 
 |  |  |       }; | 
 |  |  |       // 患者基础信息 | 
 |  |  |       messagelistpatient(queryParams).then((response) => { | 
 |  |  |         this.userform = response.rows[0]; | 
 |  |  |         this.dynamicTags = response.rows[0].tagList.map(this.processElement); | 
 |  |  |         if (response.rows[0]) { | 
 |  |  |           this.userform = response.rows[0]; | 
 |  |  |           // this.dynamicTags = response.rows[0].tagList.map(this.processElement); | 
 |  |  |         } | 
 |  |  |       }); | 
 |  |  |     }, | 
 |  |  |     // 获取语音数据 | 
 |  |  | 
 |  |  |         if (res.code == 200) { | 
 |  |  |           this.voiceDatatop = res.data.serviceSubtaskDetails; | 
 |  |  |           this.voice = res.data.voice; | 
 |  |  |           // // this.activeName = "yy"; | 
 |  |  |           this.activeName = "yy"; | 
 |  |  |           this.taskname = res.data.taskName; | 
 |  |  |           // 问卷展示数据处理 | 
 |  |  |           this.tableDatatop = res.data.filteredDetails; | 
 |  |  | 
 |  |  |               item.scriptResult = []; | 
 |  |  |             } | 
 |  |  |           }); | 
 |  |  |           console.log(this.tableDatatop, "this.tableDatatop"); | 
 |  |  |  | 
 |  |  |           if (!this.tableDatatop.length) { | 
 |  |  |             this.puttaskid(this.templateid); | 
 |  |  |           } | 
 |  |  | 
 |  |  |     // 医护人员存储数据 | 
 |  |  |     getdetail() { | 
 |  |  |       let excep = ""; | 
 |  |  |       const promises = []; | 
 |  |  |       this.tableDatatop.forEach((item) => { | 
 |  |  |         var objs = item.svyLibTemplateTargetoptions.find( | 
 |  |  |           (items) => items.optioncontent == item.scriptResult | 
 |  |  | 
 |  |  |             excep = 1; | 
 |  |  |           } | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |         let obj = { | 
 |  |  |           asrtext: null, | 
 |  |  |           patid: this.patid, | 
 |  |  |           subId: this.id, | 
 |  |  |           taskid: this.taskid, | 
 |  |  |           scriptid: item.id, | 
 |  |  |           excep: excep, | 
 |  |  |           questiontext: item.scriptContent, | 
 |  |  |         }; | 
 |  |  |         if (item.scriptType == 2 && item.scriptResult[0]) { | 
 |  |  | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |         if (item.isoption == 3) { | 
 |  |  |           serviceSubtaskDetailedit(obj).then((res) => { | 
 |  |  |             if (res.code == 200) { | 
 |  |  |             } else { | 
 |  |  |               this.$modal.error("修改失败"); | 
 |  |  |             } | 
 |  |  |           }); | 
 |  |  |           promises.push(serviceSubtaskDetailedit(obj)); | 
 |  |  |         } else { | 
 |  |  |           serviceSubtaskDetailadd(obj).then((res) => { | 
 |  |  |             if (res.code == 200) { | 
 |  |  |               console.log(res); | 
 |  |  |             } else { | 
 |  |  |               this.$modal.error("修改失败"); | 
 |  |  |             } | 
 |  |  |           }); | 
 |  |  |           promises.push(serviceSubtaskDetailadd(obj)); | 
 |  |  |         } | 
 |  |  |       }); | 
 |  |  |       this.Editsingletasksonyic(excep); | 
 |  |  |       // 使用 Promise.all 等待所有异步操作完成 | 
 |  |  |       Promise.all(promises) | 
 |  |  |         .then((results) => { | 
 |  |  |           // 所有异步操作成功完成后的逻辑 | 
 |  |  |           results.forEach((res) => { | 
 |  |  |             if (res.code !== 200) { | 
 |  |  |               this.$modal.error("修改失败"); | 
 |  |  |             } | 
 |  |  |           }); | 
 |  |  |           this.Editsingletasksonyic(6); | 
 |  |  |           this.$modal | 
 |  |  |             .confirm( | 
 |  |  |               '任务保存成功是否针对患者:"' + this.userform.name + '"再次随访?' | 
 |  |  |             ) | 
 |  |  |             .then(() => { | 
 |  |  |               this.dialogFormVisible = true; | 
 |  |  |             }) | 
 |  |  |             .catch(() => {}); | 
 |  |  |         }) | 
 |  |  |         .catch((error) => { | 
 |  |  |           // 如果有任何一个异步操作失败,会进入这里 | 
 |  |  |           console.error("发生错误:", error); | 
 |  |  |         }); | 
 |  |  |     }, | 
 |  |  |     yuyingetdetail() { | 
 |  |  |       this.tableDatatop.forEach((item, index) => { | 
 |  |  | 
 |  |  |       addPersonVoices(obj).then((res) => { | 
 |  |  |         if (res.code == 200) { | 
 |  |  |           this.$modal.msgSuccess("服务保存成功"); | 
 |  |  |           this.$modal | 
 |  |  |             .confirm( | 
 |  |  |               '任务保存成功是否针对患者:"' + this.userform.name + '"再次随访?' | 
 |  |  |             ) | 
 |  |  |             .then(() => { | 
 |  |  |               this.dialogFormVisible = true; | 
 |  |  |             }) | 
 |  |  |             .catch(() => {}); | 
 |  |  |         } | 
 |  |  |       }); | 
 |  |  |     }, | 
 |  |  |  | 
 |  |  |     // 获取患者记录 | 
 |  |  |     getTaskservelist(id) { | 
 |  |  |       this.id = id; | 
 |  |  |       console.log(id, "idsub"); | 
 |  |  |  | 
 |  |  |       if (id) { | 
 |  |  |         this.Whetherall = false; | 
 |  |  |       } else { | 
 |  |  | 
 |  |  |       getTaskservelist({ | 
 |  |  |         patid: this.patid, | 
 |  |  |         subId: id, | 
 |  |  |       deptOrDistrict:2, | 
 |  |  |       }).then((res) => { | 
 |  |  |         if (res.code == 200) { | 
 |  |  |           this.form = res.rows[0].serviceSubtaskList[0]; | 
 |  |  |           this.logsheetlist = res.rows[0].serviceSubtaskList; | 
 |  |  |           this.templateid = this.logsheetlist[0].templateid; | 
 |  |  |           const targetDate = new Date(this.form.longSendTime); // 目标日期 | 
 |  |  |           const now = new Date(); // 当前时间 | 
 |  |  |           this.form.endtime = this.formatTime(this.form.endtime); | 
 |  |  |           if (now < targetDate && this.form.sendstate == 2) { | 
 |  |  |             this.$confirm("当前服务未到发送时间请谨慎修改", "提示", { | 
 |  |  |               confirmButtonText: "确定", | 
 |  |  |               cancelButtonText: "取消", | 
 |  |  |               type: "warning", | 
 |  |  |             }) | 
 |  |  |               .then(() => {}) | 
 |  |  |               .catch(() => {}); | 
 |  |  |           } | 
 |  |  |           this.getuserinfo(); | 
 |  |  |         } | 
 |  |  | this.getuserinfo(); | 
 |  |  |         console.log(this.Voicetype, "this.Voicetype"); | 
 |  |  |  | 
 |  |  |         if (this.Voicetype) { | 
 |  |  |           this.getPersonVoices(); | 
 |  |  |         } else { | 
 |  |  | 
 |  |  |       getTaskservelist({ | 
 |  |  |         patid: this.patid, | 
 |  |  |         subId: this.id, | 
 |  |  |       deptOrDistrict:2, | 
 |  |  |       }).then((res) => { | 
 |  |  |         if (res.code == 200) { | 
 |  |  |           objson = res.rows[0].serviceSubtaskList[0]; | 
 |  |  |           objson.suggest = son; | 
 |  |  |           Editsingletaskson(objson).then((res) => { | 
 |  |  |             if (res.code) { | 
 |  |  |               this.$modal.msgSuccess("记录成功"); | 
 |  |  |               this.$modal.msgSuccess("服务记录成功"); | 
 |  |  |               this.getTaskservelist(this.id); | 
 |  |  |             } | 
 |  |  |           }); | 
 |  |  |         } | 
 |  |  |       }); | 
 |  |  |     }, | 
 |  |  |     Editsingletasksonyic(excep) { | 
 |  |  |     Editsingletasksonyic(sendstate) { | 
 |  |  |       console.log(sendstate, "sendstate"); | 
 |  |  |  | 
 |  |  |       let objson = {}; | 
 |  |  |       getTaskservelist({ | 
 |  |  |         patid: this.patid, | 
 |  |  |         subId: this.id, | 
 |  |  |       deptOrDistrict:2, | 
 |  |  |       }).then((res) => { | 
 |  |  |         if (res.code == 200) { | 
 |  |  |           objson = res.rows[0].serviceSubtaskList[0]; | 
 |  |  |           objson.excep = excep; | 
 |  |  |           objson.remark = this.form.remark; | 
 |  |  |           if (sendstate) objson.sendstate = sendstate; | 
 |  |  |           Editsingletaskson(objson).then((res) => { | 
 |  |  |             if (res.code) { | 
 |  |  |               this.$modal.msgSuccess("服务修改成功"); | 
 |  |  |               alterpatient(this.userform).then((res) => { | 
 |  |  |                 if (res.code == 200) { | 
 |  |  |                   this.$modal.msgSuccess("基础信息保存成功"); | 
 |  |  |                 } else { | 
 |  |  |                   this.$modal.msgError("基础信息修改失败"); | 
 |  |  |                 } | 
 |  |  |               }); | 
 |  |  |               this.getTaskservelist(this.id); | 
 |  |  |             } | 
 |  |  |           }); | 
 |  |  | 
 |  |  |       this.$modal | 
 |  |  |         .confirm('是否查看任务为"' + row.taskName + '"的服务详情数据?') | 
 |  |  |         .then(() => { | 
 |  |  |           if (row.preachformson) { | 
 |  |  |             if (row.preachformson.includes("3")) { | 
 |  |  |               this.Voicetype = 1; | 
 |  |  |             } | 
 |  |  |           } | 
 |  |  |           console.log(this.Voicetype, "this.Voicetype"); | 
 |  |  |  | 
 |  |  |           this.taskid = row.taskid; | 
 |  |  |           this.id = row.id; | 
 |  |  |           this.patid = row.patid; | 
 |  |  |           this.Voicetype = row.type; | 
 |  |  |           this.serviceType = row.serviceType; | 
 |  |  |     this.getTaskservelist(this.id); | 
 |  |  |           this.getTaskservelist(this.id); | 
 |  |  |         }) | 
 |  |  |         .catch(() => {}); | 
 |  |  |     }, | 
 |  |  | 
 |  |  |     }, | 
 |  |  |     overdata() { | 
 |  |  |       this.tableDatatop.forEach((item, index) => { | 
 |  |  |         console.log(item.svyLibTemplateTargetoptions); | 
 |  |  |  | 
 |  |  |         var obj = item.svyLibTemplateTargetoptions.find( | 
 |  |  |           (items) => items.optioncontent == item.scriptResult | 
 |  |  |         ); | 
 |  |  | 
 |  |  |     }, | 
 |  |  |     // 创建再次随访服务 | 
 |  |  |     setupsubtask() { | 
 |  |  |       console.log(this.form); | 
 |  |  |       let form = structuredClone(this.form); | 
 |  |  |       form.longSendTime = this.formatTime(form.date1); | 
 |  |  |       if (form.resource) { | 
 |  |  |         if (form.resource == 2) { | 
 |  |  |           form.serviceType = 10; | 
 |  |  |       this.$refs["zcform"].validate((valid) => { | 
 |  |  |         if (valid) { | 
 |  |  |           let form = structuredClone(this.form); | 
 |  |  |           form.longSendTime = this.formatTime(form.date1); | 
 |  |  |           form.finishtime = ""; | 
 |  |  |           if (form.resource) { | 
 |  |  |             if (form.resource == 2) { | 
 |  |  |               form.serviceType = 10; | 
 |  |  |             } | 
 |  |  |           } else { | 
 |  |  |             this.$modal.msgError("未选择随访方式"); | 
 |  |  |           } | 
 |  |  |           form.id = null; | 
 |  |  |           form.sendstate = 2; | 
 |  |  |           addserviceSubtask(form).then((res) => { | 
 |  |  |             if (res.code == 200) { | 
 |  |  |               this.$modal.msgSuccess("创建成功"); | 
 |  |  |             } else { | 
 |  |  |               this.$modal.msgError("创建失败"); | 
 |  |  |             } | 
 |  |  |             this.dialogFormVisible = false; | 
 |  |  |           }); | 
 |  |  |         } | 
 |  |  |       } else { | 
 |  |  |         this.$modal.msgError("未选择随访方式"); | 
 |  |  |       } | 
 |  |  |       form.id = null; | 
 |  |  |       form.sendstate = 2; | 
 |  |  |       addserviceSubtask(form).then((res) => { | 
 |  |  |         if (res.code == 200) { | 
 |  |  |           this.$modal.msgSuccess("创建成功"); | 
 |  |  |         } else { | 
 |  |  |           this.$modal.msgError("创建失败"); | 
 |  |  |         } | 
 |  |  |         this.dialogFormVisible = false; | 
 |  |  |       }); | 
 |  |  |     }, | 
 |  |  |     updateScore(a, b, c) { | 
 |  |  | 
 |  |  | .Followuserinfos { | 
 |  |  |   margin: 20px 10px; | 
 |  |  |   align-items: center; | 
 |  |  |   height: 300px; | 
 |  |  |   padding: 30px; | 
 |  |  |   background: #ffff; | 
 |  |  |   border: 1px solid #dcdfe6; |