| | |
| | | </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"> |
| | |
| | | <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" |
| | |
| | | <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" |
| | |
| | | </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"> |
| | |
| | | v-model="form.endtime" |
| | | ></el-input> |
| | | </el-form-item> |
| | | <div class="headline">上次随访</div> |
| | | <el-divider></el-divider> |
| | | <el-row> |
| | | <el-col :span="12"> |
| | | <el-form-item label="随访方式"> |
| | | <el-select |
| | | v-model="form.visitType2" |
| | | filterable |
| | | allow-create |
| | | default-first-option |
| | | disabled |
| | | placeholder="请选择随访方式" |
| | | class="custom-disabled" |
| | | > |
| | | <el-option |
| | | v-for="item in options" |
| | | :key="item.value" |
| | | :label="item.label" |
| | | :value="item.value" |
| | | > |
| | | </el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="随访时间"> |
| | | <el-date-picker |
| | | type="date" |
| | | disabled |
| | | placeholder="选择日期" |
| | | :picker-options="pickerOptions" |
| | | align="right" |
| | | v-model="form.date2" |
| | | class="custom-disabled" |
| | | ></el-date-picker> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | |
| | | <el-form-item label="随访记录"> |
| | | <el-input |
| | | class="custom-disabled" |
| | | type="textarea" |
| | | disabled |
| | | v-model="form.remark2" |
| | | ></el-input> |
| | | </el-form-item> |
| | | <div class="headline">下次随访</div> |
| | | <el-divider></el-divider> |
| | | <el-row> |
| | | <el-col :span="12"> |
| | | <el-form-item label="随访方式" prop="date1"> |
| | | <el-select |
| | | v-model="form.visitType" |
| | | filterable |
| | | allow-create |
| | | default-first-option |
| | | @change="visitChange" |
| | | placeholder="请选择随访方式(依出院时间技计算)" |
| | | > |
| | | <el-option |
| | | v-for="item in options" |
| | | :key="item.value" |
| | | :label="item.label" |
| | | :value="item.value" |
| | | > |
| | | </el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="随访时间" prop="date1"> |
| | | <el-date-picker |
| | | type="date" |
| | | placeholder="选择日期" |
| | | :picker-options="pickerOptions" |
| | | align="right" |
| | | v-model="form.date1" |
| | | ></el-date-picker> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | <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-radio-group> |
| | | </el-form-item> |
| | | <!-- <el-form-item label="即刻发送"> |
| | | <el-switch v-model="zcform.delivery"></el-switch> |
| | | </el-form-item> --> |
| | | <el-form-item label="随访时间" prop="date1"> |
| | | <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-item label="随访记录"> |
| | | <el-input type="textarea" v-model="form.remark"></el-input> |
| | | </el-form-item> |
| | |
| | | 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: "", |
| | |
| | | voiceDatatop: [], //题目表 |
| | | dynamicTags: [], |
| | | zcrules: { |
| | | date1: [ |
| | | resource: [ |
| | | { required: true, message: "请选择随访方式", trigger: "change" }, |
| | | ], |
| | | resource: [ |
| | | { required: true, message: "请选择随访时间", trigger: "blur" }, |
| | | ], |
| | | 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: { |
| | |
| | | }, |
| | | }, |
| | | { |
| | | text: "30天后", |
| | | text: "一个月后", |
| | | onClick(picker) { |
| | | const date = new Date(); |
| | | date.setTime(date.getTime() + 3600 * 1000 * 24 * 30); |
| | | picker.$emit("pick", date); |
| | | }, |
| | | }, |
| | | { |
| | | text: "三个月后", |
| | | onClick(picker) { |
| | | const date = new Date(); |
| | | date.setTime(date.getTime() + 3600 * 1000 * 24 * 90); |
| | | picker.$emit("pick", date); |
| | | }, |
| | | }, |
| | | { |
| | | text: "六个月后", |
| | | onClick(picker) { |
| | | const date = new Date(); |
| | | date.setTime(date.getTime() + 3600 * 1000 * 24 * 180); |
| | | picker.$emit("pick", date); |
| | | }, |
| | | }, |
| | | { |
| | | text: "一年后", |
| | | onClick(picker) { |
| | | const date = new Date(); |
| | | date.setTime(date.getTime() + 3600 * 1000 * 24 * 365); |
| | | picker.$emit("pick", date); |
| | | }, |
| | | }, |
| | | ], |
| | | }, |
| | | options: [ |
| | | { |
| | | value: "七天后", |
| | | label: "七天后", |
| | | }, |
| | | { |
| | | value: "15天后", |
| | | label: "15天后", |
| | | }, |
| | | { |
| | | value: "一个月后", |
| | | label: "一个月后", |
| | | }, |
| | | { |
| | | value: "三个月后", |
| | | label: "三个月后", |
| | | }, |
| | | { |
| | | value: "六个月后", |
| | | label: "六个月后", |
| | | }, |
| | | { |
| | | value: "一年后", |
| | | label: "一年后", |
| | | }, |
| | | ], |
| | | userform: {}, |
| | | Whetherall: true, //是否全部记录展示 |
| | | dialogFormVisible: false, |
| | | Voicetype: 0, //是否为语音服务 |
| | | visitCount: null, |
| | | logsheetlist: [], |
| | | topicobj: {}, |
| | | sendname: null, |
| | |
| | | this.patid = this.$route.query.patid; |
| | | this.again = this.$route.query.again; |
| | | this.Voicetype = this.$route.query.Voicetype; |
| | | this.visitCount = this.$route.query.visitCount; |
| | | this.serviceType = this.$route.query.serviceType; |
| | | |
| | | this.getTaskservelist(); |
| | |
| | | isFinish: false, |
| | | }).then((res) => { |
| | | if (res.code === 200) { |
| | | // 针对再次随访服务进行删除结果赋值 |
| | | if (this.again && res.data.upScriptResult) { |
| | | this.tableDatatop = res.data.upScriptResult; |
| | | } else { |
| | | this.tableDatatop = res.data.scriptResult; |
| | | res.data.upScriptResult.forEach((itemA) => { |
| | | const itemB = res.data.scriptResult.find( |
| | | (item) => item.scriptContent === itemA.scriptContent |
| | | ); |
| | | if (itemB) { |
| | | itemB.scriptResult = itemA.scriptResult; |
| | | } |
| | | }); |
| | | } |
| | | this.tableDatatop = res.data.scriptResult; |
| | | |
| | | this.tableDatatop.forEach((item) => { |
| | | if (item.scriptType == 2) item.scriptResult = []; |
| | | if (item.scriptResult && item.scriptType != 2) { |
| | | if (item.scriptResultId && item.scriptType != 2) { |
| | | item.isoption = 3; |
| | | item.scriptResult = item.scriptResult; |
| | | } else if (item.scriptResult && item.scriptType == 2) { |
| | | } else if (item.scriptResultId && item.scriptType == 2) { |
| | | item.scriptResult = item.scriptResult.split("&"); |
| | | item.isoption = 3; |
| | | } |
| | |
| | | } |
| | | }); |
| | | }, |
| | | // 再次随访时间选取 |
| | | visitChange(value) { |
| | | // 根据选择的随访方式设置时间 |
| | | const now = new Date(); |
| | | if (value.includes("七天后")) { |
| | | this.form.date1 = new Date( |
| | | Date.parse(this.form.endtime) + 3600 * 1000 * 24 * 7 |
| | | ); |
| | | } else if (value.includes("15天后")) { |
| | | this.form.date1 = new Date( |
| | | Date.parse(this.form.endtime) + 3600 * 1000 * 24 * 15 |
| | | ); |
| | | } else if (value.includes("一个月后")) { |
| | | this.form.date1 = new Date( |
| | | Date.parse(this.form.endtime) + 3600 * 1000 * 24 * 30 |
| | | ); |
| | | } else if (value.includes("三个月后")) { |
| | | this.form.date1 = new Date( |
| | | Date.parse(this.form.endtime) + 3600 * 1000 * 24 * 90 |
| | | ); |
| | | } else if (value.includes("六个月后")) { |
| | | this.form.date1 = new Date( |
| | | Date.parse(this.form.endtime) + 3600 * 1000 * 24 * 180 |
| | | ); |
| | | } else if (value.includes("一年后")) { |
| | | this.form.date1 = new Date( |
| | | Date.parse(this.form.endtime) + 3600 * 1000 * 24 * 365 |
| | | ); |
| | | } |
| | | }, |
| | | |
| | | // 获取语音数据 |
| | | getPersonVoices(id) { |
| | | let obj = { |
| | |
| | | ) |
| | | .then(() => { |
| | | document.querySelector("#app").scrollTo(0, 0); |
| | | this.formtidy(); |
| | | this.dialogFormVisible = true; |
| | | }) |
| | | .catch(() => {}); |
| | | .catch(() => { |
| | | if (this.form.serviceType == 13) { |
| | | if (this.visitCount) { |
| | | this.$router.push({ |
| | | path: "/logisticsservice/zbAgain", |
| | | }); |
| | | } else { |
| | | this.$router.push({ |
| | | path: "/logisticsservice/record", |
| | | }); |
| | | } |
| | | } else if (form.serviceType == 2) { |
| | | if (this.visitCount) { |
| | | this.$router.push({ |
| | | path: "/followvisit/again", |
| | | }); |
| | | } else { |
| | | this.$router.push({ |
| | | path: "/followvisit/discharge", |
| | | }); |
| | | } |
| | | } |
| | | }); |
| | | }) |
| | | .catch((error) => { |
| | | // 如果有任何一个异步操作失败,会进入这里 |
| | | 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; |
| | | |
| | | // 等待下一个tick确保值已更新 |
| | | this.$nextTick(() => { |
| | | this.$refs.callButton.startCall(); |
| | | |
| | | // 可选:根据不同类型做不同处理 |
| | | if (type === "tel") { |
| | | console.log("正在呼叫患者本人:", phone); |
| | | } else { |
| | | console.log("正在呼叫联系人:", phone); |
| | | } |
| | | }); |
| | | } |
| | | }, |
| | | yuyingetdetail() { |
| | | this.tableDatatop.forEach((item, index) => { |
| | |
| | | ) |
| | | .then(() => { |
| | | document.querySelector("#app").scrollTo(0, 0); |
| | | this.formtidy(); |
| | | this.dialogFormVisible = true; |
| | | }) |
| | | .catch(() => {}); |
| | | .catch(() => { |
| | | if (this.form.serviceType == 13) { |
| | | if (this.visitCount) { |
| | | this.$router.push({ |
| | | path: "/logisticsservice/zbAgain", |
| | | }); |
| | | } else { |
| | | this.$router.push({ |
| | | path: "/logisticsservice/record", |
| | | }); |
| | | } |
| | | } else if (form.serviceType == 2) { |
| | | if (this.visitCount) { |
| | | this.$router.push({ |
| | | path: "/followvisit/again", |
| | | }); |
| | | } else { |
| | | this.$router.push({ |
| | | path: "/followvisit/discharge", |
| | | }); |
| | | } |
| | | } |
| | | }); |
| | | } |
| | | }); |
| | | }, |
| | | |
| | | // 再次随访数据更替 |
| | | formtidy() { |
| | | this.form.visitType2 = this.form.visitType; |
| | | this.form.date2 = this.form.longSendTime; |
| | | this.form.remark2 = this.form.remark; |
| | | }, |
| | | // 获取患者记录 |
| | | getTaskservelist(id) { |
| | | if (id) { |
| | |
| | | sendAgain() { |
| | | document.querySelector("#app").scrollTo(0, 0); |
| | | // scrollTo(0, 0) |
| | | this.formtidy(); |
| | | this.dialogFormVisible = true; |
| | | }, |
| | | // 查看详情 |
| | |
| | | if (form.resource) { |
| | | if (form.resource == 2) { |
| | | form.serviceType = 13; |
| | | form.visitDeptCode = localStorage.getItem("deptCode"); |
| | | form.visitDeptName = "随访中心"; |
| | | } else { |
| | | form.visitDeptCode = form.deptcode; |
| | | form.visitDeptName = form.deptname; |
| | | } |
| | | } else { |
| | | this.$modal.msgError("未选择随访方式"); |
| | | return; |
| | | } |
| | | // form.id = null; |
| | | form.sendstate = 2; |
| | |
| | | this.$modal.msgSuccess("创建成功"); |
| | | if (form.serviceType == 13) { |
| | | this.$router.push({ |
| | | path: "/logisticsservice/record", |
| | | path: "/logisticsservice/again", |
| | | }); |
| | | } else if (form.serviceType == 2) { |
| | | this.$router.push({ |
| | | path: "/followvisit/discharge", |
| | | path: "/logisticsservice/zbAgain", |
| | | }); |
| | | } |
| | | } else { |
| | |
| | | color: #02a7f0 !important; |
| | | } |
| | | .el-message-box__btns button:nth-child(2) { |
| | | margin-left: 10px; |
| | | background-color:#f57676; |
| | | border-color:#f57676 |
| | | }.mulsz { |
| | | margin-left: 10px; |
| | | 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; |
| | | } |
| | | .el-input.is-disabled .el-input__inner { |
| | | background-color: #fff; /* 背景颜色 */ |
| | | border-color: #dcdfe6; /* 边框颜色 */ |
| | | color: #080808 !important; /* 文字颜色 */ |
| | | cursor: not-allowed; /* 鼠标样式 */ |
| | | } |
| | | .el-textarea.is-disabled .el-textarea__inner { |
| | | background-color: #fff; /* 背景颜色 */ |
| | | border-color: #dcdfe6; /* 边框颜色 */ |
| | | color: #080808 !important; /* 文字颜色 */ |
| | | cursor: not-allowed; /* 鼠标样式 */ |
| | | } |
| | | </style> |