| | |
| | | v-if=" |
| | | (orgname == '南华大学附属第一医院' || |
| | | orgname == '丽水市第二人民医院' || |
| | | orgname == '缙云县人民医院') && |
| | | orgname == '缙云县人民医院' || |
| | | orgname == '丽水市妇幼保健院' || |
| | | orgname == '松阳县中医医院') && |
| | | !Voicetype |
| | | " |
| | | > |
| | |
| | | </span> |
| | | </div> |
| | | |
| | | <div class="preview-left" v-if="!Voicetype"> |
| | | <div class="preview-left" v-if="showQuestionnaireForm"> |
| | | <div |
| | | class="topic-dev" |
| | | v-for="(item, index) in tableDatatop" |
| | |
| | | </div> |
| | | </div> |
| | | <el-button |
| | | v-if="Voicetype" |
| | | v-if="showQuestionnaireForm" |
| | | type="primary" |
| | | @click="yuyingetdetail" |
| | | @click="getdetail" |
| | | >保存问卷详情</el-button |
| | | > |
| | | <el-button v-else type="primary" @click="getdetail" |
| | | <el-button v-else type="primary" @click="yuyingetdetail" |
| | | >保存问卷详情</el-button |
| | | > |
| | | </div> |
| | |
| | | v-if="(form.isVisitAgain == 1) & (visitAgain == 2)" |
| | | > |
| | | 再次随访 |
| | | </el-button> |
| | | <!-- 超时服务:管理员可将完成时间改为应随访时间、状态改为已完成 --> |
| | | <el-button |
| | | type="danger" |
| | | plain |
| | | @click="handleTimeoutComplete" |
| | | v-if="form.sendstate == 7 && isAdmin" |
| | | > |
| | | 超时标记已完成 |
| | | </el-button> |
| | | </div> |
| | | |
| | |
| | | <div class="collapse-section"> |
| | | <el-collapse v-model="collapseActive" accordion> |
| | | <el-collapse-item title="患者档案信息" name="patient"> |
| | | <el-form ref="userform2" :model="userform" label-width="90px" size="small"> |
| | | <el-form |
| | | ref="userform2" |
| | | :model="userform" |
| | | label-width="90px" |
| | | size="small" |
| | | > |
| | | <el-row :gutter="16"> |
| | | <el-col :span="12"> |
| | | <el-form-item label="患者姓名"> |
| | | <el-input v-model="userform.name" placeholder="请输入姓名" maxlength="30"></el-input> |
| | | <el-input |
| | | v-model="userform.name" |
| | | placeholder="请输入姓名" |
| | | maxlength="30" |
| | | ></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="性别"> |
| | | <el-select v-model="userform.sex" placeholder="请选择" style="width: 100%"> |
| | | <el-select |
| | | v-model="userform.sex" |
| | | placeholder="请选择" |
| | | style="width: 100%" |
| | | > |
| | | <el-option label="男" :value="1"></el-option> |
| | | <el-option label="女" :value="2"></el-option> |
| | | </el-select> |
| | |
| | | <el-row :gutter="16"> |
| | | <el-col :span="12"> |
| | | <el-form-item label="年龄"> |
| | | <el-input v-model="userform.age" placeholder="请输入年龄" maxlength="20"></el-input> |
| | | <el-input |
| | | v-model="userform.age" |
| | | placeholder="请输入年龄" |
| | | maxlength="20" |
| | | ></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="联系方式"> |
| | | <el-input v-model="userform.telcode" placeholder="请输入联系方式" maxlength="20"></el-input> |
| | | <el-input |
| | | v-model="userform.telcode" |
| | | placeholder="请输入联系方式" |
| | | maxlength="20" |
| | | ></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | <el-row :gutter="16"> |
| | | <el-col :span="24"> |
| | | <el-form-item label="亲属电话"> |
| | | <el-input v-model="userform.relativetelcode" placeholder="请输入亲属联系方式" maxlength="20"></el-input> |
| | | <el-input |
| | | v-model="userform.relativetelcode" |
| | | placeholder="请输入亲属联系方式" |
| | | maxlength="20" |
| | | ></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | <el-row :gutter="16"> |
| | | <el-col :span="24"> |
| | | <el-form-item label="诊断名称"> |
| | | <el-input v-model="form.leavediagname" placeholder="请输入诊断" maxlength="50"></el-input> |
| | | <el-input |
| | | v-model="form.leavediagname" |
| | | placeholder="请输入诊断" |
| | | maxlength="50" |
| | | ></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | <el-row :gutter="16"> |
| | | <el-col :span="24"> |
| | | <el-form-item label="出生地"> |
| | | <el-input v-model="userform.birthplace" placeholder="国、省、地市、区县、街道等" maxlength="50"></el-input> |
| | | <el-input |
| | | v-model="userform.birthplace" |
| | | placeholder="国、省、地市、区县、街道等" |
| | | maxlength="50" |
| | | ></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | <el-row :gutter="16"> |
| | | <el-col :span="24"> |
| | | <el-form-item label="居住地"> |
| | | <el-input v-model="userform.placeOfResidence" placeholder="国、省、地市、区县、街道等" maxlength="50"></el-input> |
| | | <el-input |
| | | v-model="userform.placeOfResidence" |
| | | placeholder="国、省、地市、区县、街道等" |
| | | maxlength="50" |
| | | ></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | </el-form> |
| | | </el-collapse-item> |
| | | <el-collapse-item title="投诉建议" name="advice" v-if="orgname=='缙云县人民医院'"> |
| | | <el-collapse-item |
| | | title="投诉建议" |
| | | name="advice" |
| | | v-if="orgname == '缙云县人民医院'" |
| | | > |
| | | <AdviceList :subid="taskid" :taskid="id" :patid="patid" /> |
| | | </el-collapse-item> |
| | | </el-collapse> |
| | | </div> |
| | | |
| | | |
| | | |
| | | </div> |
| | | </div> |
| | | </div> |
| | |
| | | }; |
| | | return typeMap[this.callStatus]; |
| | | }, |
| | | // 是否以问卷形式展示(非语音服务,或语音服务但无完整语音数据需手动填报) |
| | | showQuestionnaireForm() { |
| | | return !this.Voicetype; |
| | | }, |
| | | // 是否为管理员角色 |
| | | isAdmin() { |
| | | const roles = this.$store.getters.roles || []; |
| | | return roles.includes("admin") || roles.includes("sysadmin"); |
| | | }, |
| | | }, |
| | | created() { |
| | | this.taskid = this.$route.query.taskid; |
| | |
| | | if (res.code == 200) { |
| | | this.voiceDatatop = res.data.serviceSubtaskDetails; |
| | | this.voice = res.data.voice; |
| | | this.activeName = "yy"; |
| | | this.activeName = this.voice ? "yy" : "wj"; |
| | | this.taskname = res.data.taskName; |
| | | // 问卷展示数据处理 |
| | | this.tableDatatop = res.data.filteredDetails; |
| | |
| | | .map((obj) => obj.targetvalue) |
| | | .join("&"); |
| | | } |
| | | console.log(item.targetvalue, "item.targetvalue"); |
| | | |
| | | if (item.targetvalue) { |
| | | item.scriptResult = item.targetvalue.split("&"); |
| | | } |
| | | console.log(item.scriptResult); |
| | | }); |
| | | } |
| | | }); |
| | |
| | | this.$modal.msgSuccess("服务保存成功"); |
| | | this.Editsingletasksonyic(this.serviceStates); |
| | | const orgName = localStorage.getItem("orgname"); |
| | | |
| | | if (this.form.isVisitAgain != 1 || this.visitAgain == 1) { |
| | | if ( |
| | | this.form.isVisitAgain != 1 || |
| | | orgName == "丽水市中医院" || |
| | | this.visitAgain == 1 |
| | | ) { |
| | | this.Torouter(); |
| | | return; |
| | | } |
| | |
| | | savequestiondetail(obj).then((res) => { |
| | | if (res.code == 200) { |
| | | this.$modal.msgSuccess("服务保存成功"); |
| | | // this.Torouter(); |
| | | |
| | | if ( |
| | | this.form.isVisitAgain != 1 || |
| | | orgName == "丽水市中医院" || |
| | |
| | | this.Torouter(); |
| | | return; |
| | | } |
| | | |
| | | this.$modal |
| | | .confirm( |
| | | '任务保存成功是否针对患者:"' + |
| | |
| | | } |
| | | }); |
| | | }, |
| | | // 超时服务:管理员将完成时间改为应随访时间、状态改为已完成 |
| | | handleTimeoutComplete() { |
| | | this.$modal |
| | | .confirm( |
| | | "是否将该超时服务的随访完成时间调整为应随访时间,并将随访状态改为已完成?" |
| | | ) |
| | | .then(() => { |
| | | getTaskservelist({ |
| | | patid: this.patid, |
| | | subId: this.id, |
| | | }).then((res) => { |
| | | if (res.code == 200) { |
| | | const objson = res.rows[0].serviceSubtaskList.find( |
| | | (item) => item.id == this.id |
| | | ); |
| | | if (objson) { |
| | | objson.finishtime = objson.visitTime; |
| | | objson.sendstate = 6; |
| | | Editsingletaskson(objson).then((res) => { |
| | | if (res.code) { |
| | | this.$modal.msgSuccess("操作成功"); |
| | | this.getTaskservelist(); |
| | | } |
| | | }); |
| | | } |
| | | } |
| | | }); |
| | | }) |
| | | .catch(() => {}); |
| | | }, |
| | | alterpatient(sendstate) { |
| | | this.Editsingletasksonyic(this.serviceStates); |
| | | // alterpatient(this.userform).then((res) => { |
| | |
| | | // 同时重置与选项相关的状态 |
| | | // questionItem.isabnormal = false; |
| | | questionItem.showAppendInput = false; |
| | | questionItem.score = null; // 取消选中后清空题目分数 |
| | | // 注意:取消选中时,我们通常不希望触发题目跳转逻辑,所以直接返回 |
| | | // 如果需要,可以在这里添加取消选中后的特定逻辑,例如重置题目序列 |
| | | } else { |
| | |
| | | // 处理异常状态高亮 |
| | | this.tableDatatop[questionIndex].isabnormal = |
| | | selectedOptionObj.isabnormal; |
| | | |
| | | // 处理分数:把选中选项的 score 带到题目 score 上 |
| | | this.tableDatatop[questionIndex].score = selectedOptionObj.score; |
| | | |
| | | // 处理附加输入框显示 |
| | | |
| | |
| | | if (obj.isabnormal) { |
| | | this.tableDatatop[index].isabnormal = obj.isabnormal; |
| | | } |
| | | // 回显单选题目分数:把已选中选项的 score 带到题目 score 上 |
| | | if (obj.score !== undefined && obj.score !== null) { |
| | | this.tableDatatop[index].score = obj.score; |
| | | } |
| | | this.$forceUpdate(); |
| | | } |
| | | }); |
| | |
| | | |
| | | return `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`; |
| | | }, |
| | | updateScore(a, b, c) {}, |
| | | // 多选:把选中选项的分数累加到题目 score 上 |
| | | updateScore(selectedValues, questionIndex, question) { |
| | | const options = question.svyTaskTemplateTargetoptions || []; |
| | | const score = options.reduce((sum, opt) => { |
| | | if (selectedValues && selectedValues.includes(opt.optioncontent)) { |
| | | return sum + (Number(opt.score) || 0); |
| | | } |
| | | return sum; |
| | | }, 0); |
| | | question.score = score; |
| | | this.$forceUpdate(); |
| | | }, |
| | | // 合并修改相关============================= |
| | | toggleMergeMode() { |
| | | this.isMergeMode = !this.isMergeMode; |