| | |
| | | <div class="userinfo-text"> |
| | | <!-- <span>患者服务详情</span> --> |
| | | <div class="headline"> |
| | | <div>患者服务详情</div> |
| | | <div style="margin-left: 20px"> |
| | | <el-button |
| | | v-if="!Whetherall" |
| | | type="primary" |
| | | @click="getTaskservelist()" |
| | | >查看患者全部服务</el-button> |
| | | <el-button |
| | | v-else |
| | | type="success" |
| | | @click="getTaskservelist(taskid)" |
| | | >查看患者本次服务信息</el-button> |
| | | </div> |
| | | <div>患者服务详情</div> |
| | | <div style="margin-left: 20px"> |
| | | <el-button |
| | | v-if="!Whetherall" |
| | | type="primary" |
| | | @click="getTaskservelist()" |
| | | >查看患者全部服务</el-button |
| | | > |
| | | <el-button v-else type="success" @click="getTaskservelist(id)" |
| | | >查看患者本次服务信息</el-button |
| | | > |
| | | </div> |
| | | <div style="margin-left: 20px; color: #59a0f0"> |
| | | <el-link |
| | | href="https://9.208.2.207:6060/search-homepage" |
| | | target="_blank" |
| | | :underline="true" |
| | | > |
| | | 前往CDSS查询 |
| | | </el-link> |
| | | </div> |
| | | </div> |
| | | <!-- <el-button type="success">随访后短信</el-button> --> |
| | | </div> |
| | | </div> |
| | | <div> |
| | | <el-table :data="logsheetlist" style="width: 100%"> |
| | | <el-table-column prop="sendname" align="center" label="姓名"> |
| | | </el-table-column> |
| | | <el-table-column prop="sendstate" align="center" label="服务状态"> |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="finishtime" |
| | | prop="sendname" |
| | | align="center" |
| | | label="完成时间" |
| | | width="200" |
| | | show-overflow-tooltip |
| | | label="姓名" |
| | | width="100" |
| | | > |
| | | </el-table-column> |
| | | <el-table-column |
| | |
| | | > |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="sendstate" |
| | | align="center" |
| | | width="200" |
| | | label="任务状态" |
| | | > |
| | | <template slot-scope="scope"> |
| | | <div v-if="scope.row.sendstate == 1"> |
| | | <el-tag type="primary" :disable-transitions="false" |
| | | >表单已领取</el-tag |
| | | > |
| | | </div> |
| | | <div v-if="scope.row.sendstate == 2"> |
| | | <el-tag type="primary" :disable-transitions="false" |
| | | >待随访</el-tag |
| | | > |
| | | </div> |
| | | <div v-if="scope.row.sendstate == 3"> |
| | | <el-tag type="success" :disable-transitions="false" |
| | | >表单已发送</el-tag |
| | | > |
| | | </div> |
| | | <div v-if="scope.row.sendstate == 4"> |
| | | <el-tag type="info" :disable-transitions="false">不执行</el-tag> |
| | | </div> |
| | | <div v-if="scope.row.sendstate == 5"> |
| | | <el-tag type="danger" :disable-transitions="false" |
| | | >发送失败</el-tag |
| | | > |
| | | </div> |
| | | <div v-if="scope.row.sendstate == 6"> |
| | | <el-tag type="success" :disable-transitions="false" |
| | | >已完成</el-tag |
| | | > |
| | | </div> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="finishtime" |
| | | align="center" |
| | | label="随访完成时间" |
| | | width="200" |
| | | show-overflow-tooltip |
| | | > |
| | | </el-table-column> |
| | | <el-table-column |
| | | label="出院日期" |
| | | width="200" |
| | | align="center" |
| | | key="endtime" |
| | | prop="endtime" |
| | | > |
| | | <template slot-scope="scope"> |
| | | <span>{{ formatTime(scope.row.endtime) }}</span> |
| | | </template></el-table-column |
| | | > |
| | | <el-table-column |
| | | label="责任护士" |
| | | width="120" |
| | | align="center" |
| | | key="nurseName" |
| | | prop="nurseName" |
| | | /> |
| | | <el-table-column |
| | | label="主治医生" |
| | | width="120" |
| | | align="center" |
| | | key="drname" |
| | | prop="drname" |
| | | /> |
| | | |
| | | <el-table-column |
| | | label="结果状态" |
| | | align="center" |
| | | key="excep" |
| | | prop="excep" |
| | | width="120" |
| | | > |
| | | <template slot-scope="scope"> |
| | | <dict-tag |
| | | :options="dict.type.sys_yujing" |
| | | :value="scope.row.excep" |
| | | /> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column |
| | | label="处理意见" |
| | | align="center" |
| | | key="suggest" |
| | | prop="suggest" |
| | | width="120" |
| | | > |
| | | <template slot-scope="scope"> |
| | | <dict-tag |
| | | :options="dict.type.sys_suggest" |
| | | :value="scope.row.suggest" |
| | | /> |
| | | </template> |
| | | </el-table-column> |
| | | |
| | | <el-table-column |
| | | prop="templatename" |
| | | align="center" |
| | | label="服务模板" |
| | | width="200" |
| | | show-overflow-tooltip |
| | | > |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="remark" |
| | | align="center" |
| | | label="服务记录" |
| | | width="200" |
| | | show-overflow-tooltip |
| | | > |
| | |
| | | width="210" |
| | | > |
| | | </el-table-column> |
| | | <!-- <el-table-column |
| | | <el-table-column |
| | | label="操作" |
| | | fixed="right" |
| | | align="center" |
| | |
| | | @click="Seedetails(scope.row)" |
| | | v-hasPermi="['system:user:edit']" |
| | | ><span class="button-zx" |
| | | ><i class="el-icon-s-order"></i>查看服务</span |
| | | ><i class="el-icon-s-order"></i>查看</span |
| | | ></el-button |
| | | > |
| | | </template> |
| | | </el-table-column> --> |
| | | </el-table-column> |
| | | </el-table> |
| | | </div> |
| | | </div> |
| | | <div class="Followuserinfos"> |
| | | <div> |
| | | <el-form ref="form" :model="form" label-width="120px"> |
| | | <div class="headline"> |
| | | <div>人工处理</div> |
| | | <el-row :gutter="20"> |
| | | <el-col :span="12" |
| | | ><el-form-item label="联系电话"> |
| | | <el-input |
| | | placeholder="联系电话缺失" |
| | | v-model="userform.telcode" |
| | | ></el-input> </el-form-item |
| | | ></el-col> |
| | | <el-col :span="12" |
| | | ><el-form-item label="联系人电话"> |
| | | <el-input |
| | | placeholder="联系人电话缺失" |
| | | v-model="userform.relativetelcode" |
| | | ></el-input> </el-form-item |
| | | ></el-col> |
| | | </el-row> |
| | | <div style="margin-left: 30px"> |
| | | <el-button type="primary" plain @click="Editsingletasksonyic('')" |
| | | >保存服务</el-button |
| | | > |
| | | </div> |
| | | </div> |
| | | |
| | | <el-form-item label="随访记录"> |
| | | <el-input type="textarea" v-model="form.remark"></el-input> |
| | | </el-form-item> |
| | | |
| | | <el-form-item label="处理意见"> |
| | | <div> |
| | | <el-button plain type="warning" @click="Editsingletaskson('1')" |
| | | >暂不处理</el-button |
| | | > |
| | | <el-button plain type="success" @click="Editsingletaskson('2')" |
| | | >病情稳定</el-button |
| | | > |
| | | <el-button plain type="primary" @click="Editsingletaskson('3')" |
| | | >通知就诊</el-button |
| | | > |
| | | <!-- <el-button type="danger" @click="Editsingletaskson('4')" |
| | | >失访</el-button |
| | | > --> |
| | | <el-button plain type="info" @click="Editsingletaskson('5')" |
| | | >中心随访</el-button |
| | | > |
| | | <el-button type="primary" round @click="sendAgain()" |
| | | >再次随访</el-button |
| | | > |
| | | </div> |
| | | </el-form-item> |
| | | </el-form> |
| | | <el-collapse> |
| | | <el-collapse-item title="查看当前患者信息" name="1"> |
| | | <div class="detailed"> |
| | | <el-form ref="userform" :model="userform" label-width="100px"> |
| | | <el-row :gutter="20"> |
| | | <el-col :span="12"> |
| | | <el-form-item label="患者姓名" prop="name"> |
| | | <el-input |
| | | v-model="userform.name" |
| | | placeholder="请输入姓名" |
| | | maxlength="30" |
| | | ></el-input> </el-form-item |
| | | ></el-col> |
| | | <el-col :span="12" |
| | | ><el-form-item label="联系方式" prop="telcode"> |
| | | <el-input |
| | | v-model="userform.telcode" |
| | | placeholder="请输入联系方式" |
| | | maxlength="30" |
| | | /> </el-form-item |
| | | ></el-col> |
| | | </el-row> |
| | | <el-row :gutter="20"> |
| | | <el-col :span="24"> |
| | | <el-form-item label="出生地" prop="birthplace"> |
| | | <el-input |
| | | v-model="userform.birthplace" |
| | | placeholder="国、省、地市、区县、街道等详细信息" |
| | | maxlength="50" |
| | | /> </el-form-item |
| | | ></el-col> |
| | | </el-row> |
| | | <el-row :gutter="20"> |
| | | <el-col :span="24" |
| | | ><el-form-item label="居住地" prop="placeOfResidence"> |
| | | <el-input |
| | | v-model="userform.placeOfResidence" |
| | | placeholder="国、省、地市、区县、街道等详细信息" |
| | | maxlength="50" |
| | | /> </el-form-item |
| | | ></el-col> |
| | | </el-row> |
| | | <!-- <el-row :gutter="20"> |
| | | <el-col :span="24"> |
| | | <el-form-item label="标签" prop="desc"> |
| | | <div class="xinz-inf"> |
| | | <el-tag |
| | | :key="tag.tagname" |
| | | type="success" |
| | | v-for="tag in dynamicTags" |
| | | :disable-transitions="false" |
| | | > |
| | | {{ tag.tagname }} |
| | | </el-tag> |
| | | </div> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> --> |
| | | </el-form> |
| | | </div> |
| | | </el-collapse-item> |
| | | </el-collapse> |
| | | </div> |
| | | </div> |
| | | <div> |
| | | <el-tabs type="border-card"> |
| | | <el-tab-pane> |
| | | <el-tabs v-model="activeName" type="border-card"> |
| | | <el-tab-pane name="wj"> |
| | | <span class="mulsz" slot="label" |
| | | ><i class="el-icon-notebook-1"></i> 问卷随访结果</span |
| | | > |
| | | <div class="CONTENT"> |
| | | <div class="title">{{ taskname ? taskname : "问卷" }}</div> |
| | | <div class="preview-left"> |
| | | |
| | | <div class="preview-left" v-if="!Voicetype"> |
| | | <!-- 单选 --> |
| | | <div |
| | | class="topic-dev" |
| | | v-for="(item, index) in tableDatatop" |
| | | :key="item.aaa" |
| | | :key="item.id" |
| | | > |
| | | <div |
| | | class="scriptTopic-dev" |
| | | :class=" |
| | | item.isabnormal |
| | | ? 'scriptTopic-isabnormal' |
| | | : 'scriptTopic-dev' |
| | | " |
| | | :key="index" |
| | | v-if="item.scriptType == 1" |
| | | > |
| | |
| | | v-for="( |
| | | items, index |
| | | ) in item.svyLibTemplateTargetoptions" |
| | | :class="items.isabnormal ? 'red-star' : ''" |
| | | :key="index" |
| | | :label="items.optioncontent" |
| | | >{{ items.optioncontent }}</el-radio |
| | |
| | | </div> |
| | | <!-- 多选 --> |
| | | <div |
| | | class="scriptTopic-dev" |
| | | :class=" |
| | | item.isabnormal |
| | | ? 'scriptTopic-isabnormal' |
| | | : 'scriptTopic-dev' |
| | | " |
| | | :key="index" |
| | | v-if="item.scriptType == 2" |
| | | > |
| | |
| | | @change="updateScore($event, index, item)" |
| | | > |
| | | <el-checkbox |
| | | :class="items.isabnormal ? 'red-star' : ''" |
| | | @change="$forceUpdate()" |
| | | v-for="( |
| | | items, indexs |
| | |
| | | </div> |
| | | </div> |
| | | </div> |
| | | |
| | | <div class="preview-left" v-else> |
| | | <div |
| | | class="topic-dev" |
| | | v-for="(item, index) in tableDatatop" |
| | | :key="item.id" |
| | | > |
| | | <div v-if="item.targetvalue"> |
| | | <div class="dev-text"> |
| | | {{ index + 1 }}、[单选]<span>{{ item.questiontext }}</span> |
| | | </div> |
| | | <div class="dev-xx"> |
| | | <el-radio-group |
| | | v-model="item.matchedtext" |
| | | @change="handleOptionChange($event, index, item)" |
| | | > |
| | | <el-radio |
| | | v-for="(items, index) in item.scriptResult" |
| | | :key="items" |
| | | :label="items" |
| | | >{{ items }}</el-radio |
| | | > |
| | | </el-radio-group> |
| | | </div> |
| | | <div v-show="item.prompt"> |
| | | <el-alert :title="item.prompt" type="warning"> </el-alert> |
| | | </div> |
| | | </div> |
| | | |
| | | <div class="scriptTopic-dev" :key="index" v-else> |
| | | <div class="dev-text"> |
| | | {{ index + 1 }}、[问答]<span>{{ item.questiontext }}</span> |
| | | </div> |
| | | <div class="dev-xx"> |
| | | <el-input |
| | | type="textarea" |
| | | :rows="2" |
| | | placeholder="请输入答案" |
| | | v-model="item.matchedtext" |
| | | clearable |
| | | > |
| | | </el-input> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <el-button v-if="Voicetype" type="primary" @click="yuyingetdetail" |
| | | >保存服务详情</el-button |
| | | > |
| | | <el-button v-else type="primary" @click="getdetail" |
| | | >保存服务详情</el-button |
| | | > |
| | | </div> |
| | | </el-tab-pane> |
| | | <el-tab-pane> |
| | | |
| | | <el-tab-pane name="yy"> |
| | | <span class="mulsz" slot="label" |
| | | ><i class="el-icon-headset"></i> 语音随访详情</span |
| | | > |
| | | <div class="borderdiv"> |
| | | <div> |
| | | <div class="leftside"> |
| | | <i class="el-icon-phone-outline"></i |
| | | ><span>您今天身体情况怎么样</span> |
| | | </div> |
| | | <div class="offside"> |
| | | <i class="el-icon-user"></i> |
| | | <div class="offside-value"> |
| | | <el-input v-model="input"></el-input> |
| | | <el-radio v-model="radio" label="1">很棒</el-radio> |
| | | <el-radio v-model="radio" label="2">还可以</el-radio> |
| | | <el-radio v-model="radio" label="3">不太好</el-radio> |
| | | <el-radio v-model="radio" label="4">比较差</el-radio> |
| | | <div class="title">{{ taskname ? taskname : "问卷" }}</div> |
| | | <div |
| | | style=" |
| | | display: flex; |
| | | text-align: center; |
| | | align-items: center; |
| | | color: #59a0f0; |
| | | " |
| | | > |
| | | 完整语音: |
| | | <mini-audio |
| | | :audio-source=" |
| | | voice ? voice : 'https://example.com/example.mp3' |
| | | " |
| | | ></mini-audio> |
| | | </div> |
| | | <div class="preview-left"> |
| | | <div v-for="item in voiceDatatop"> |
| | | <div class="leftside"> |
| | | <i class="el-icon-phone-outline"></i |
| | | ><span>{{ item.questiontext }}</span> |
| | | </div> |
| | | <div class="offside"> |
| | | <i class="el-icon-user"></i> |
| | | <div class="offside-value"> |
| | | <el-input |
| | | type="textarea" |
| | | :autosize="{ minRows: 1 }" |
| | | v-model="item.asrtext" |
| | | ></el-input> |
| | | |
| | | <div> |
| | | <mini-audio |
| | | :audio-source=" |
| | | item.questionvoice |
| | | ? item.questionvoice |
| | | : 'https://example.com/example.mp3' |
| | | " |
| | | ></mini-audio> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <el-button v-if="Voicetype" type="primary" @click="yuyingetdetail" |
| | | >保存随访详情</el-button |
| | | > |
| | | <el-button v-else type="primary" @click="getdetail" |
| | | >保存随访详情</el-button |
| | | > |
| | | </div> |
| | | </el-tab-pane> |
| | | </el-tabs> |
| | | </div> |
| | | <el-dialog title="患者再次随访" :visible.sync="dialogFormVisible"> |
| | | <el-form ref="zcform" :rules="zcrules" :model="form" label-width="80px"> |
| | | <el-form-item label="任务名称"> |
| | | <el-input |
| | | style="width: 400px" |
| | | disabled |
| | | v-model="form.taskName" |
| | | ></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="患者名称"> |
| | | <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="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="随访方式" 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="选择日期" |
| | | 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> |
| | | </el-form> |
| | | <div slot="footer" class="dialog-footer"> |
| | | <el-button @click="dialogFormVisible = false">取 消</el-button> |
| | | <el-button type="primary" @click="setupsubtask">确认创建服务</el-button> |
| | | </div> |
| | | </el-dialog> |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | | import { getsearchrResults, getTaskservelist } from "@/api/AiCentre/index"; |
| | | import { |
| | | getsearchrResults, |
| | | getPersonVoices, |
| | | addserviceSubtask, |
| | | getTaskservelist, |
| | | getTaskFollowup, |
| | | Editsingletaskson, |
| | | serviceSubtaskDetailedit, |
| | | serviceSubtaskDetailadd, |
| | | updatePersonVoices, |
| | | addPersonVoices, |
| | | } from "@/api/AiCentre/index"; |
| | | import { messagelistpatient, alterpatient } from "@/api/patient/homepage"; |
| | | export default { |
| | | dicts: ["sys_normal_disable", "sys_user_sex", "sys_yujing", "sys_suggest"], |
| | | data() { |
| | | return { |
| | | radio: "1", |
| | | userid: "", |
| | | input: "今天身体还不错", |
| | | radio: "2", |
| | | taskname: "", |
| | | activeName: "wj", |
| | | voice: "", |
| | | templateid: "", |
| | | zcform: {}, |
| | | form: {}, |
| | | tableDatatop: [], //题目表 |
| | | Whetherall:false, //是否全部记录展示 |
| | | voiceDatatop: [], //题目表 |
| | | dynamicTags: [], |
| | | zcrules: { |
| | | date1: [ |
| | | { required: true, message: "请选择随访方式", trigger: "change" }, |
| | | ], |
| | | resource: [ |
| | | { required: true, message: "请选择随访时间", trigger: "blur" }, |
| | | ], |
| | | }, |
| | | userform: {}, |
| | | Whetherall: false, //是否全部记录展示 |
| | | dialogFormVisible: false, |
| | | Voicetype: 0, //是否为语音服务 |
| | | logsheetlist: [], |
| | | topicobj: {}, |
| | | sendname: null, |
| | | serviceType: null, |
| | | id: null, |
| | | taskid: null, |
| | | patid: null, |
| | | }; |
| | |
| | | |
| | | created() { |
| | | this.taskid = this.$route.query.taskid; |
| | | this.id = this.$route.query.id; |
| | | this.sendname = this.$route.query.sendname; |
| | | this.patid = this.$route.query.patid; |
| | | this.Voicetype = this.$route.query.Voicetype; |
| | | this.serviceType = this.$route.query.serviceType; |
| | | this.getsearchrResults(); |
| | | this.getTaskservelist(this.taskid); |
| | | console.log(this.id, this.patid); |
| | | |
| | | this.getTaskservelist(this.id); |
| | | }, |
| | | |
| | | methods: { |
| | | // 获取问卷数据 |
| | | getsearchrResults() { |
| | | getsearchrResults(id) { |
| | | getsearchrResults({ |
| | | taskid: this.taskid, |
| | | patid: this.patid, |
| | | subId: id ? id : 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) => { |
| | | if (item.scriptResult && item.scriptType != 2) { |
| | | item.scriptResult = JSON.parse(item.scriptResult); |
| | | } else if (item.scriptResult && item.scriptType == 2) { |
| | | console.log(item.scriptResultId, "scriptResultId"); |
| | | |
| | | if (item.scriptResultId && item.scriptType != 2) { |
| | | item.isoption = 3; |
| | | item.scriptResult = item.scriptResult; |
| | | } else if (item.scriptResultId && item.scriptType == 2) { |
| | | item.scriptResult = item.scriptResult.split("&"); |
| | | item.isoption = 3; |
| | | } |
| | | }); |
| | | this.taskname = res.data.taskName; |
| | | this.overdata(); |
| | | } |
| | | }); |
| | | }, |
| | | // 获取基础信息 |
| | | getuserinfo() { |
| | | const queryParams = { |
| | | pid: Number(this.patid), |
| | | allhosp: "0", |
| | | pageNum: 1, |
| | | }; |
| | | // 患者基础信息 |
| | | messagelistpatient(queryParams).then((response) => { |
| | | if (response.rows[0]) { |
| | | this.userform = response.rows[0]; |
| | | // this.dynamicTags = response.rows[0].tagList.map(this.processElement); |
| | | } |
| | | }); |
| | | }, |
| | | // 获取语音数据 |
| | | getPersonVoices(id) { |
| | | let obj = { |
| | | taskid: this.taskid, |
| | | 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; |
| | | this.activeName = "yy"; |
| | | this.taskname = res.data.taskName; |
| | | // 问卷展示数据处理 |
| | | this.tableDatatop = res.data.filteredDetails; |
| | | this.tableDatatop.forEach((item) => { |
| | | if (item.targetvalue) { |
| | | item.scriptResult = item.targetvalue.split("&"); |
| | | } else { |
| | | item.scriptResult = []; |
| | | } |
| | | }); |
| | | if (!this.tableDatatop.length) { |
| | | this.puttaskid(this.templateid); |
| | | } |
| | | } |
| | | }); |
| | | }, |
| | | // 获取问卷完整数据比对 |
| | | puttaskid(id) { |
| | | getTaskFollowup(id).then((res) => { |
| | | if (res.code == 200) { |
| | | this.tableDatatop = res.data.ivrTaskTemplateScriptVOList; |
| | | this.tableDatatop.forEach((item) => { |
| | | item.id = null; |
| | | // 类型判断赋值 |
| | | if (item.ivrTaskScriptTargetoptionList) { |
| | | item.targetvalue = 1; |
| | | item.questiontext = item.scriptContent; |
| | | item.targetvalue = item.ivrTaskScriptTargetoptionList |
| | | .map((obj) => obj.targetvalue) |
| | | .join("&"); |
| | | } |
| | | if (item.targetvalue) { |
| | | item.scriptResult = item.targetvalue.split("&"); |
| | | } else { |
| | | item.scriptResult = []; |
| | | } |
| | | }); |
| | | console.log(this.tableDatatop, "this.tableDatatop"); |
| | | } |
| | | }); |
| | | }, |
| | | // 医护人员存储数据 |
| | | getdetail() { |
| | | let excep = ""; |
| | | const promises = []; |
| | | this.tableDatatop.forEach((item) => { |
| | | var objs = item.svyLibTemplateTargetoptions.find( |
| | | (items) => items.optioncontent == item.scriptResult |
| | | ); |
| | | if (obj) { |
| | | if (objs.isabnormal) { |
| | | 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]) { |
| | | obj.asrtext = item.scriptResult.join("&"); |
| | | } else if (item.scriptType != 2 && item.scriptResult) { |
| | | obj.asrtext = item.scriptResult; |
| | | } |
| | | |
| | | if (item.isoption == 3) { |
| | | promises.push(serviceSubtaskDetailedit(obj)); |
| | | } else { |
| | | promises.push(serviceSubtaskDetailadd(obj)); |
| | | } |
| | | }); |
| | | // 使用 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) => { |
| | | console.log(item.scriptResult, "scriptResult"); |
| | | item.scriptResult = item.scriptResult.join("&"); |
| | | item.templatequestionnum = index + 1; |
| | | item.subId = this.id; |
| | | item.taskid = this.taskid; |
| | | item.asrtext = item.matchedtext; |
| | | if (!item.id) { |
| | | item.isoperation = 1; |
| | | } |
| | | item.patid = this.patid; |
| | | item.templateid = item.templateID; |
| | | }); |
| | | let obj = { |
| | | serviceSubtaskDetailList: this.tableDatatop, |
| | | param1: this.taskid, |
| | | param2: this.patid, |
| | | subId: this.id, |
| | | }; |
| | | |
| | | addPersonVoices(obj).then((res) => { |
| | | if (res.code == 200) { |
| | | this.$modal.msgSuccess("服务保存成功"); |
| | | this.$modal |
| | | .confirm( |
| | | '任务保存成功是否针对患者:"' + this.userform.name + '"再次随访?' |
| | | ) |
| | | .then(() => { |
| | | this.dialogFormVisible = true; |
| | | }) |
| | | .catch(() => {}); |
| | | } |
| | | }); |
| | | }, |
| | | |
| | | // 获取患者记录 |
| | | getTaskservelist(taskid) { |
| | | if (taskid) { |
| | | this.Whetherall=false; |
| | | }else{ |
| | | this.Whetherall=true; |
| | | getTaskservelist(id) { |
| | | console.log(id,'idsub'); |
| | | |
| | | if (id) { |
| | | this.Whetherall = false; |
| | | } else { |
| | | this.Whetherall = true; |
| | | } |
| | | |
| | | getTaskservelist({ |
| | | patid: this.patid, |
| | | taskid: taskid, |
| | | subId: id, |
| | | }).then((res) => { |
| | | if (res.code == 200) { |
| | | this.logsheetlist = res.rows; |
| | | this.form = res.rows[0].serviceSubtaskList[0]; |
| | | console.log(this.form, "this.form"); |
| | | this.logsheetlist = res.rows[0].serviceSubtaskList; |
| | | this.templateid = this.logsheetlist[0].templateid; |
| | | const targetDate = new Date(this.form.longSendTime); // 目标日期 |
| | | const now = new Date(); // 当前时间 |
| | | |
| | | if (now < targetDate && this.form.sendstate == 2) { |
| | | this.$confirm("当前服务未到发送时间请谨慎修改", "提示", { |
| | | confirmButtonText: "确定", |
| | | cancelButtonText: "取消", |
| | | type: "warning", |
| | | }) |
| | | .then(() => {}) |
| | | .catch(() => {}); |
| | | } |
| | | this.getuserinfo(); |
| | | } |
| | | if (this.Voicetype) { |
| | | this.getPersonVoices(); |
| | | } else { |
| | | this.getsearchrResults(); |
| | | } |
| | | }); |
| | | }, |
| | | Editsingletaskson(son) { |
| | | let objson = {}; |
| | | getTaskservelist({ |
| | | patid: this.patid, |
| | | subId: this.id, |
| | | }).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.getTaskservelist(this.id); |
| | | } |
| | | }); |
| | | } |
| | | }); |
| | | }, |
| | | Editsingletasksonyic(sendstate) { |
| | | console.log(sendstate,'sendstate'); |
| | | |
| | | let objson = {}; |
| | | getTaskservelist({ |
| | | patid: this.patid, |
| | | subId: this.id, |
| | | }).then((res) => { |
| | | if (res.code == 200) { |
| | | objson = res.rows[0].serviceSubtaskList[0]; |
| | | 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); |
| | | } |
| | | }); |
| | | } |
| | | }); |
| | | }, |
| | | // 调起再次发送 |
| | | sendAgain() { |
| | | this.dialogFormVisible = true; |
| | | }, |
| | | // 查看详情 |
| | | Seedetails(row) { |
| | | this.$modal.confirm('是否查看任务为"' + optionids + '"的服务项?').then(function () { |
| | | }).then(() => { |
| | | this.getList(); |
| | | }).catch(() => { }); |
| | | 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.serviceType = row.serviceType; |
| | | this.getTaskservelist(this.id); |
| | | }) |
| | | .catch(() => {}); |
| | | }, |
| | | handleOptionChange(a, b, c) { |
| | | console.log(this.tableDatatop[b], "this.tableDatatop[b]"); |
| | | |
| | | if (this.Voicetype) { |
| | | var obj = this.tableDatatop[b].ivrTaskScriptTargetoptionList.find( |
| | | (item) => item.optioncontent == a |
| | | ); |
| | | } else { |
| | | var obj = this.tableDatatop[b].svyLibTemplateTargetoptions.find( |
| | | (item) => item.optioncontent == a |
| | | ); |
| | | } |
| | | if (obj.isabnormal) { |
| | | this.tableDatatop[b].isabnormal = true; |
| | | } else { |
| | | this.tableDatatop[b].isabnormal = false; |
| | | } |
| | | this.$forceUpdate(); |
| | | }, |
| | | overdata() { |
| | | this.tableDatatop.forEach((item, index) => { |
| | | console.log(item.svyLibTemplateTargetoptions); |
| | | |
| | | var obj = item.svyLibTemplateTargetoptions.find( |
| | | (items) => items.optioncontent == item.scriptResult |
| | | ); |
| | | if (obj) { |
| | | if (obj.isabnormal) { |
| | | this.tableDatatop[index].isabnormal = true; |
| | | } else { |
| | | this.tableDatatop[index].isabnormal = false; |
| | | } |
| | | this.$forceUpdate(); |
| | | } |
| | | }); |
| | | }, |
| | | // 创建再次随访服务 |
| | | setupsubtask() { |
| | | 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; |
| | | }); |
| | | } |
| | | }); |
| | | }, |
| | | updateScore(a, b, c) { |
| | | console.log(a); |
| | | console.log(b); |
| | | console.log(c); |
| | | }, |
| | | }, |
| | | }; |
| | |
| | | } |
| | | } |
| | | } |
| | | .Followuserinfos { |
| | | margin: 20px 10px; |
| | | align-items: center; |
| | | padding: 30px; |
| | | background: #ffff; |
| | | border: 1px solid #dcdfe6; |
| | | -webkit-box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.12), |
| | | 0 0 6px 0 rgba(0, 0, 0, 0.04); |
| | | .userinfo-text { |
| | | font-size: 20px; |
| | | margin-right: 20px; |
| | | margin-bottom: 10px; |
| | | } |
| | | .userinfo-value { |
| | | color: rgb(15, 139, 211); |
| | | span { |
| | | margin-right: 20px; |
| | | } |
| | | } |
| | | } |
| | | .borderdiv { |
| | | min-height: 60vh; |
| | | font-size: 20px; |
| | | padding: 30px; |
| | | .title { |
| | | font-size: 22px; |
| | | font-weight: bold; |
| | | margin-bottom: 20px; |
| | | text-align: center; |
| | | } |
| | | .leftside { |
| | | margin-bottom: 30px; |
| | | margin: 30px 0; |
| | | span { |
| | | width: 400px; |
| | | margin-left: 20px; |
| | |
| | | } |
| | | } |
| | | } |
| | | .headline { |
| | | font-size: 24px; |
| | | height: 40px; |
| | | border-left: 5px solid #41a1be; |
| | | padding-left: 5px; |
| | | margin-bottom: 10px; |
| | | display: flex; |
| | | // justify-content: space-between; |
| | | .Add-details { |
| | | font-size: 18px; |
| | | color: #02a7f0; |
| | | cursor: pointer; |
| | | } |
| | | .scriptTopic-isabnormal { |
| | | color: red; |
| | | } |
| | | .detailed { |
| | | width: 88%; |
| | | border-radius: 8px; |
| | | padding: 30px; |
| | | margin-bottom: 30px; |
| | | background-color: #ddf0f8; |
| | | .bg-purple { |
| | | margin-bottom: 20px; |
| | | } |
| | | .spanvalue { |
| | | display: inline-block; |
| | | min-width: 200px; |
| | | border-bottom: 1px solid rgb(172, 172, 172); |
| | | } |
| | | } |
| | | .headline { |
| | | font-size: 24px; |
| | | height: 40px; |
| | | border-left: 5px solid #41a1be; |
| | | padding-left: 5px; |
| | | margin-bottom: 10px; |
| | | display: flex; |
| | | // justify-content: space-between; |
| | | .Add-details { |
| | | font-size: 18px; |
| | | color: #02a7f0; |
| | | cursor: pointer; |
| | | } |
| | | } |
| | | .red-star { |
| | | ::v-deep.el-radio__label { |
| | | position: relative; |
| | | padding-right: 10px; /* 根据需要调整 */ |
| | | } |
| | | ::v-deep.el-radio__label::after { |
| | | content: "*"; |
| | | color: red; |
| | | position: absolute; |
| | | right: -5px; /* 根据需要调整 */ |
| | | top: 0; |
| | | } |
| | | ::v-deep.el-input-group__textarea { |
| | | white-space: pre-wrap; /* 保持空白符序列并正常换行 */ |
| | | word-break: break-all; /* 在长单词或URL地址内部进行换行 */ |
| | | } |
| | | ::v-deep.el-checkbox__label { |
| | | position: relative; |
| | | padding-right: 10px; /* 根据需要调整 */ |
| | | } |
| | | ::v-deep.el-checkbox__label::after { |
| | | content: "*"; |
| | | color: red; |
| | | position: absolute; |
| | | right: -5px; /* 根据需要调整 */ |
| | | top: 0; |
| | | } |
| | | } |
| | | ::v-deep.offside-value .el-radio__label { |
| | | color: #fff; |
| | | } |
| | | ::v-deep.el-link.el-link--default { |
| | | color: #02a7f0 !important; |
| | | } |
| | | .mulsz { |
| | | font-size: 25px; |
| | | margin-top: 20px; |