| | |
| | | <template> |
| | | <!-- 聊连页面记录 --> |
| | | <div class="Followupdetailspage"> |
| | | <div class="Followupdetailspage" id="app-container"> |
| | | <div class="Followuserinfo"> |
| | | <div> |
| | | <div class="userinfo-text"> |
| | |
| | | >查看患者全部服务</el-button |
| | | > |
| | | <el-button v-else type="success" @click="getTaskservelist(id)" |
| | | >查看患者本次服务信息</el-button |
| | | >只展示本次服务信息</el-button |
| | | > |
| | | </div> |
| | | <div style="margin-left: 20px; color: #59a0f0"> |
| | |
| | | </div> |
| | | </div> |
| | | <div> |
| | | <el-table :data="logsheetlist" style="width: 100%"> |
| | | <el-table :data="logsheetlist" :row-class-name="tableRowClassName" style="width: 100%"> |
| | | <el-table-column |
| | | prop="sendname" |
| | | align="center" |
| | | label="姓名" |
| | | width="100" |
| | | > |
| | | <template slot-scope="scope"> |
| | | <el-button |
| | | size="medium" |
| | | type="text" |
| | | @click=" |
| | | gettoken360( |
| | | scope.row.sfzh, |
| | | scope.row.drcode, |
| | | scope.row.drname |
| | | ) |
| | | " |
| | | ><span class="button-textsc">{{ |
| | | scope.row.sendname |
| | | }}</span></el-button |
| | | > |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="taskName" |
| | |
| | | <el-table-column |
| | | prop="finishtime" |
| | | align="center" |
| | | label="完成时间" |
| | | label="随访完成时间" |
| | | width="200" |
| | | show-overflow-tooltip |
| | | > |
| | |
| | | size="medium" |
| | | type="text" |
| | | @click="Seedetails(scope.row)" |
| | | v-hasPermi="['system:user:edit']" |
| | | ><span class="button-zx" |
| | | ><i class="el-icon-s-order"></i>查看</span |
| | | ></el-button |
| | |
| | | <div class="headline"> |
| | | <div>人工处理</div> |
| | | <el-row :gutter="20"> |
| | | <el-col :span="12" |
| | | <el-col :span="8" |
| | | ><el-form-item label="联系电话"> |
| | | <el-input |
| | | disabled |
| | | placeholder="联系电话缺失" |
| | | v-model="userform.telcode" |
| | | ></el-input> </el-form-item |
| | | ></el-col> |
| | | <el-col :span="12" |
| | | <el-col :span="8" |
| | | ><el-form-item label="联系人电话"> |
| | | <el-input |
| | | disabled |
| | | placeholder="联系人电话缺失" |
| | | v-model="userform.relativetelcode" |
| | | ></el-input> </el-form-item |
| | | ></el-col> |
| | | <el-col :span="8" |
| | | ><el-form-item label="联系人关系"> |
| | | <el-input |
| | | placeholder="联系人关系缺失" |
| | | v-model="userform.relation" |
| | | ></el-input> </el-form-item |
| | | ></el-col> |
| | | </el-row> |
| | | <div style="margin-left: 30px"> |
| | | <el-button type="primary" plain @click="Editsingletasksonyic" |
| | | <el-button type="primary" plain @click="Editsingletasksonyic('')" |
| | | >保存服务</el-button |
| | | > |
| | | </div> |
| | |
| | | <el-button plain type="info" @click="Editsingletaskson('5')" |
| | | >中心随访</el-button |
| | | > |
| | | <el-button type="primary" round @click="sendAgain()" |
| | | <el-button |
| | | type="primary" |
| | | round |
| | | v-if="this.form.isVisitAgain != 2" |
| | | @click="sendAgain()" |
| | | >再次随访</el-button |
| | | > |
| | | </div> |
| | |
| | | maxlength="30" |
| | | ></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" |
| | | placeholder="请输入联系方式" |
| | | maxlength="30" |
| | | maxlength="20" |
| | | /> </el-form-item |
| | | ></el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="亲属联系方式" prop="name"> |
| | | <el-input |
| | | v-model="userform.relativetelcode" |
| | | placeholder="请输入姓名" |
| | | maxlength="20" |
| | | ></el-input> </el-form-item |
| | | ></el-col> |
| | | </el-row> |
| | | <el-row :gutter="20"> |
| | |
| | | <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-tab-pane> |
| | | </el-tabs> |
| | | </div> |
| | | <el-dialog title="患者再次随访" :visible.sync="dialogFormVisible"> |
| | | <el-dialog |
| | | title="患者再次随访" |
| | | v-dialogDrags |
| | | :visible.sync="dialogFormVisible" |
| | | > |
| | | <el-form ref="zcform" :rules="zcrules" :model="form" label-width="80px"> |
| | | <el-form-item label="任务名称"> |
| | | <el-input |
| | |
| | | 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="随访方式" prop="resource"> |
| | | <el-radio-group v-model="form.resource"> |
| | |
| | | <el-date-picker |
| | | type="date" |
| | | placeholder="选择日期" |
| | | :picker-options="pickerOptions" |
| | | align="right" |
| | | v-model="form.date1" |
| | | style="width: 100%" |
| | | ></el-date-picker> |
| | |
| | | </el-form-item> |
| | | </el-form> |
| | | <div slot="footer" class="dialog-footer"> |
| | | <el-button @click="dialogFormVisible = false">取 消</el-button> |
| | | <el-button type="warning" @click="dialogFormVisible = false" |
| | | >取 消</el-button |
| | | > |
| | | <el-button type="primary" @click="setupsubtask">确认创建服务</el-button> |
| | | </div> |
| | | </el-dialog> |
| | |
| | | serviceSubtaskDetailadd, |
| | | updatePersonVoices, |
| | | addPersonVoices, |
| | | query360PatInfo, |
| | | } from "@/api/AiCentre/index"; |
| | | import { messagelistpatient } from "@/api/patient/homepage"; |
| | | import { |
| | | messagelistpatient, |
| | | alterpatient, |
| | | listcontactinformation, |
| | | } from "@/api/patient/homepage"; |
| | | export default { |
| | | dicts: ["sys_normal_disable", "sys_user_sex", "sys_yujing", "sys_suggest"], |
| | | data() { |
| | |
| | | activeName: "wj", |
| | | voice: "", |
| | | templateid: "", |
| | | again:'', |
| | | zcform: {}, |
| | | form: {}, |
| | | tableDatatop: [], //题目表 |
| | |
| | | { required: true, message: "请选择随访时间", trigger: "blur" }, |
| | | ], |
| | | }, |
| | | url: "http://9.208.2.190:8090/smartor/serviceExternal/query360PatInfo", |
| | | postData: { |
| | | XiaoXiTou: { |
| | | FaSongFCSJC: "ZJHES", |
| | | FaSongJGID: localStorage.getItem("orgid"), |
| | | FaSongJGMC: localStorage.getItem("orgname"), |
| | | FaSongSJ: "2025-01-09 17:29:36", |
| | | FaSongXTJC: "SUIFANGXT", |
| | | FaSongXTMC: "随访系统", |
| | | XiaoXiID: "5FA92AFB-9833-4608-87C7-F56A654AC171", |
| | | XiaoXiLX: "SC_LC_360STCX", |
| | | XiaoXiMC: "360 视图查询", |
| | | ZuHuID: localStorage.getItem("ZuHuID"), |
| | | ZuHuMC: localStorage.getItem("orgname"), |
| | | }, |
| | | YeWuXX: { |
| | | BingRenXX: { |
| | | ZhengJianHM: "", |
| | | ZhengJianLXDM: "01", |
| | | ZhengJianLXMC: "居民身份证", |
| | | ZuZhiJGID: localStorage.getItem("orgid"), |
| | | ZuZhiJGMC: localStorage.getItem("orgname"), |
| | | }, |
| | | YongHuXX: { |
| | | XiTongID: "SUIFANGXT", |
| | | XiTongMC: "随访系统", |
| | | YongHuID: "1400466972205912064", |
| | | YongHuXM: "JNRMYY", |
| | | ZuZhiJGID: localStorage.getItem("orgid"), |
| | | ZuZhiJGMC: localStorage.getItem("orgname"), |
| | | idp: "lyra", |
| | | }, |
| | | }, |
| | | }, |
| | | pickerOptions: { |
| | | shortcuts: [{ |
| | | text: '七天后', |
| | | onClick(picker) { |
| | | const date = new Date(); |
| | | date.setTime(date.getTime() + 3600 * 1000 * 24 * 7); |
| | | picker.$emit('pick', date); |
| | | } |
| | | }, { |
| | | text: '15天后', |
| | | onClick(picker) { |
| | | const date = new Date(); |
| | | date.setTime(date.getTime() + 3600 * 1000 * 24* 15); |
| | | picker.$emit('pick', date); |
| | | } |
| | | }, { |
| | | text: '30天后', |
| | | onClick(picker) { |
| | | const date = new Date(); |
| | | date.setTime(date.getTime() + 3600 * 1000 * 24 * 30); |
| | | picker.$emit('pick', date); |
| | | } |
| | | }] |
| | | }, |
| | | userform: {}, |
| | | Whetherall: false, //是否全部记录展示 |
| | | Whetherall: true, //是否全部记录展示 |
| | | dialogFormVisible: false, |
| | | Voicetype: 0, //是否为语音服务 |
| | | logsheetlist: [], |
| | |
| | | this.id = this.$route.query.id; |
| | | this.sendname = this.$route.query.sendname; |
| | | this.patid = this.$route.query.patid; |
| | | this.again = this.$route.query.again; |
| | | this.Voicetype = this.$route.query.Voicetype; |
| | | this.serviceType = this.$route.query.serviceType; |
| | | |
| | | this.getTaskservelist(this.id); |
| | | this.getTaskservelist(); |
| | | }, |
| | | |
| | | methods: { |
| | |
| | | isFinish: false, |
| | | }).then((res) => { |
| | | if (res.code === 200) { |
| | | this.tableDatatop = res.data.scriptResult.script; |
| | | if (this.again&&res.data.upScriptResult) { |
| | | this.tableDatatop = res.data.upScriptResult; |
| | | }else{ |
| | | 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; |
| | | } |
| | | }); |
| | | this.taskname = res.data.taskName; |
| | | this.overdata(); |
| | | } |
| | | }); |
| | | }, |
| | | //患者360跳转 |
| | | gettoken360(sfzh, drcode, drname) { |
| | | 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"); |
| | | // this.linkUrl = res.data.url; |
| | | } else { |
| | | this.$modal.msgWarning("360查询无结果"); |
| | | } |
| | | }); |
| | | }, |
| | |
| | | // this.dynamicTags = response.rows[0].tagList.map(this.processElement); |
| | | } |
| | | }); |
| | | listcontactinformation({ patid: this.patid }).then((response) => { |
| | | this.tableData = response.rows; |
| | | if (this.tableData.length) { |
| | | this.userform.relativetelcode = this.tableData[0].contactway; |
| | | this.userform.relation = this.tableData[0].relation; |
| | | } |
| | | }); |
| | | }, |
| | | // 获取语音数据 |
| | | getPersonVoices(id) { |
| | |
| | | patid: this.patid, |
| | | subId: id ? id : this.id, |
| | | }; |
| | | console.log(this.voiceDatatop, "111"); |
| | | |
| | | getPersonVoices(obj).then((res) => { |
| | | console.log("222"); |
| | | if (res.code == 200) { |
| | | this.voiceDatatop = res.data.serviceSubtaskDetails; |
| | | this.voice = res.data.voice; |
| | |
| | | item.scriptResult = []; |
| | | } |
| | | }); |
| | | |
| | | if (!this.tableDatatop.length) { |
| | | this.puttaskid(this.templateid); |
| | | } |
| | |
| | | item.scriptResult = []; |
| | | } |
| | | }); |
| | | console.log(this.tableDatatop, "this.tableDatatop"); |
| | | } |
| | | }); |
| | | }, |
| | |
| | | this.$modal.error("修改失败"); |
| | | } |
| | | }); |
| | | this.Editsingletasksonyic("6"); |
| | | this.Editsingletasksonyic(6); |
| | | |
| | | this.$modal |
| | | .confirm( |
| | | '任务保存成功是否针对患者:"' + this.userform.name + '"再次随访?' |
| | | '任务保存成功是否针对患者:"' + |
| | | this.logsheetlist[0].sendname + |
| | | '"再次随访?' |
| | | ) |
| | | .then(() => { |
| | | document.querySelector("#app").scrollTo(0, 0); |
| | | this.dialogFormVisible = true; |
| | | }) |
| | | .catch(() => {}); |
| | |
| | | }, |
| | | yuyingetdetail() { |
| | | this.tableDatatop.forEach((item, index) => { |
| | | console.log(item.scriptResult, "scriptResult"); |
| | | item.scriptResult = item.scriptResult.join("&"); |
| | | item.templatequestionnum = index + 1; |
| | | item.subId = this.id; |
| | |
| | | '任务保存成功是否针对患者:"' + this.userform.name + '"再次随访?' |
| | | ) |
| | | .then(() => { |
| | | document.querySelector("#app").scrollTo(0, 0); |
| | | this.dialogFormVisible = true; |
| | | }) |
| | | .catch(() => {}); |
| | |
| | | |
| | | // 获取患者记录 |
| | | getTaskservelist(id) { |
| | | this.id = id; |
| | | if (id) { |
| | | this.Whetherall = false; |
| | | } else { |
| | |
| | | subId: id, |
| | | }).then((res) => { |
| | | if (res.code == 200) { |
| | | this.form = res.rows[0].serviceSubtaskList[0]; |
| | | console.log(this.form, "this.form"); |
| | | this.form = res.rows[0].serviceSubtaskList.find(item => item.id == this.id); |
| | | 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: "确定", |
| | |
| | | objson.suggest = son; |
| | | Editsingletaskson(objson).then((res) => { |
| | | if (res.code) { |
| | | this.$modal.msgSuccess("记录成功"); |
| | | this.getTaskservelist(this.id); |
| | | this.$modal.msgSuccess("服务记录成功"); |
| | | this.getTaskservelist(); |
| | | } |
| | | }); |
| | | } |
| | | }); |
| | | }, |
| | | Editsingletasksonyic(sendstate) { |
| | | |
| | | let objson = {}; |
| | | getTaskservelist({ |
| | | patid: this.patid, |
| | | subId: this.id, |
| | | }).then((res) => { |
| | | if (res.code == 200) { |
| | | objson = res.rows[0].serviceSubtaskList[0]; |
| | | objson = res.rows[0].serviceSubtaskList.find(item => item.id == this.id); |
| | | objson.remark = this.form.remark; |
| | | objson.sendstate = sendstate; |
| | | if (sendstate) objson.sendstate = sendstate; |
| | | Editsingletaskson(objson).then((res) => { |
| | | if (res.code) { |
| | | this.$modal.msgSuccess("服务修改成功"); |
| | | this.getTaskservelist(this.id); |
| | | alterpatient(this.userform).then((res) => { |
| | | if (res.code == 200) { |
| | | this.$modal.msgSuccess("基础信息保存成功"); |
| | | } else { |
| | | this.$modal.msgError("基础信息修改失败"); |
| | | } |
| | | }); |
| | | this.getTaskservelist(); |
| | | } |
| | | }); |
| | | } |
| | | }); |
| | | }, |
| | | // 异常列渲染 |
| | | tableRowClassName({ row, rowIndex }) { |
| | | if (row.id == this.id) { |
| | | return "warning-row"; |
| | | } |
| | | return ""; |
| | | }, |
| | | // 调起再次发送 |
| | | sendAgain() { |
| | | document.querySelector("#app").scrollTo(0, 0); |
| | | // scrollTo(0, 0) |
| | | this.dialogFormVisible = true; |
| | | }, |
| | | // 查看详情 |
| | |
| | | this.Voicetype = 1; |
| | | } |
| | | } |
| | | console.log(this.Voicetype,'this.Voicetype'); |
| | | |
| | | this.taskid = row.taskid; |
| | | this.id = row.id; |
| | | this.patid = row.patid; |
| | | this.serviceType = row.serviceType; |
| | | this.getTaskservelist(this.id); |
| | | this.getTaskservelist(); |
| | | }) |
| | | .catch(() => {}); |
| | | }, |
| | | handleOptionChange(a, b, c) { |
| | | console.log(this.tableDatatop[b], "this.tableDatatop[b]"); |
| | | console.log(a); |
| | | |
| | | if (this.Voicetype) { |
| | | var obj = this.tableDatatop[b].ivrTaskScriptTargetoptionList.find( |
| | |
| | | }, |
| | | overdata() { |
| | | this.tableDatatop.forEach((item, index) => { |
| | | console.log(item.svyLibTemplateTargetoptions); |
| | | |
| | | var obj = item.svyLibTemplateTargetoptions.find( |
| | | (items) => items.optioncontent == item.scriptResult |
| | | ); |
| | |
| | | }, |
| | | // 创建再次随访服务 |
| | | setupsubtask() { |
| | | this.$refs['zcform'].validate((valid) => { |
| | | this.$refs["zcform"].validate((valid) => { |
| | | if (valid) { |
| | | this.form.remark = |
| | | this.form.remark + "【" + this.getCurrentTime() + "】"; |
| | | let form = structuredClone(this.form); |
| | | form.longSendTime = this.formatTime(form.date1); |
| | | 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; |
| | | }); |
| | | form.longSendTime = this.formatTime(form.date1); |
| | | form.finishtime = ""; |
| | | if (form.resource) { |
| | | if (form.resource == 2) { |
| | | form.serviceType = 13; |
| | | } |
| | | } else { |
| | | this.$modal.msgError("未选择随访方式"); |
| | | } |
| | | // form.id = null; |
| | | form.sendstate = 2; |
| | | addserviceSubtask(form).then((res) => { |
| | | if (res.code == 200) { |
| | | this.$modal.msgSuccess("创建成功"); |
| | | if (form.serviceType == 13) { |
| | | this.$router.push({ |
| | | path: "/logisticsservice/record", |
| | | }); |
| | | } else if (form.serviceType == 2) { |
| | | this.$router.push({ |
| | | path: "/followvisit/discharge", |
| | | }); |
| | | } |
| | | } else { |
| | | this.$modal.msgError("创建失败"); |
| | | } |
| | | document.querySelector("#app").scrollTo(0, 0); |
| | | this.dialogFormVisible = false; |
| | | }); |
| | | } |
| | | }); |
| | | }, |
| | | getCurrentTime() { |
| | | const now = new Date(); |
| | | const year = now.getFullYear(); |
| | | const month = String(now.getMonth() + 1).padStart(2, "0"); |
| | | const day = String(now.getDate()).padStart(2, "0"); |
| | | const hours = String(now.getHours()).padStart(2, "0"); |
| | | const minutes = String(now.getMinutes()).padStart(2, "0"); |
| | | const seconds = String(now.getSeconds()).padStart(2, "0"); |
| | | |
| | | return `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`; |
| | | }, |
| | | updateScore(a, b, c) { |
| | | console.log(a); |
| | | console.log(b); |
| | | console.log(c); |
| | | |
| | | }, |
| | | }, |
| | | }; |
| | |
| | | } |
| | | } |
| | | } |
| | | ::v-deep.el-table .warning-row { |
| | | background: #c4e2ee; |
| | | } |
| | | .Followuserinfos { |
| | | margin: 20px 10px; |
| | | align-items: center; |