This commit is contained in:
2025-03-26 09:07:51 +08:00
parent 19a5832bed
commit c0b1100f74
6 changed files with 1174 additions and 1659 deletions

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -1,491 +1,198 @@
<template> <template>
<div class="app-container" ref="layout"> <div class="app-container" ref="layout">
<div ref="topform" class="form"> <div ref="topform" class="form">
<SearchFilter <SearchFilter labelWidth="100px" :labelWidths="310" size="small" @search="handleQuery" @reset="resetQuery"
labelWidth="100px" @minShowCtrol="getMaxTableHeight" :query="queryParams" v-show="showSearch">
:labelWidths="310"
size="small"
@search="handleQuery"
@reset="resetQuery"
@minShowCtrol="getMaxTableHeight"
:query="queryParams"
v-show="showSearch"
>
<el-form-item label="患者姓名" prop="patientName"> <el-form-item label="患者姓名" prop="patientName">
<el-input <el-input v-model="queryParams.patientName" placeholder="请输入患者姓名" clearable @keyup.enter.native="handleQuery"
v-model="queryParams.patientName" style="width: 220px" />
placeholder="请输入患者姓名"
clearable
@keyup.enter.native="handleQuery"
style="width: 220px"
/>
</el-form-item> </el-form-item>
<el-form-item label="患者电话" prop="patientPhone"> <el-form-item label="患者电话" prop="patientPhone">
<el-input <el-input v-model="queryParams.patientPhone" placeholder="请输入患者电话" clearable @keyup.enter.native="handleQuery"
v-model="queryParams.patientPhone" style="width: 220px" />
placeholder="请输入患者电话"
clearable
@keyup.enter.native="handleQuery"
style="width: 220px"
/>
</el-form-item> </el-form-item>
<el-form-item label="外呼时间" prop="startTime"> <el-form-item label="外呼时间" prop="startTime">
<el-date-picker <el-date-picker v-model="dischargeTime" type="daterange" range-separator="" start-placeholder="开始日期"
v-model="dischargeTime" style="width: 220px" value-format="yyyy-MM-dd" end-placeholder="结束日期" @change="changeTime">
type="daterange"
range-separator="至"
start-placeholder="开始日期"
style="width: 220px"
value-format="yyyy-MM-dd"
end-placeholder="结束日期"
@change="changeTime"
>
</el-date-picker> </el-date-picker>
</el-form-item> </el-form-item>
<el-form-item label="问卷名称" prop="questionnaireName"> <el-form-item label="问卷名称" prop="questionnaireName">
<el-select <el-select v-model="queryParams.questionInfoId" placeholder="请选择问卷名称" clearable style="width: 220px">
v-model="queryParams.questionInfoId" <el-option v-for="item in questionnaireList" :key="item.id" :label="item.questionnaireName"
placeholder="请选择问卷名称" :value="item.id">
clearable
style="width: 220px"
>
<el-option
v-for="item in questionnaireList"
:key="item.id"
:label="item.questionnaireName"
:value="item.id"
>
</el-option> </el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="任务节点类型" prop="taskNodeType"> <el-form-item label="任务节点类型" prop="taskNodeType">
<el-select <el-select v-model="queryParams.taskNodeType" placeholder="请选择任务节点类型" clearable style="width: 220px">
v-model="queryParams.taskNodeType" <el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value">
placeholder="请选择任务节点类型"
clearable
style="width: 220px"
>
<el-option
v-for="item in options"
:key="item.value"
:label="item.label"
:value="item.value"
>
</el-option> </el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="医院" prop="hospitalAgencyId"> <el-form-item label="医院" prop="hospitalAgencyId">
<el-select <el-select v-model="queryParams.hospitalAgencyId" filterable placeholder="请选择医院" style="width: 220px"
v-model="queryParams.hospitalAgencyId" clearable @clear="clearhospitalAgency" @change="changehospitalAgency">
filterable <el-option v-for="item in hospitalAgencylist" :key="item.id" :label="item.agencyName" :value="item.id">
placeholder="请选择医院"
style="width: 220px"
clearable
@clear="clearhospitalAgency"
@change="changehospitalAgency"
>
<el-option
v-for="item in hospitalAgencylist"
:key="item.id"
:label="item.agencyName"
:value="item.id"
>
</el-option> </el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="科室" prop="departmentId"> <el-form-item label="科室" prop="departmentId">
<el-select <el-select v-model="queryParams.departmentId" filterable placeholder="请选择科室" style="width: 220px" clearable
v-model="queryParams.departmentId" @clear="cleardepartment" @change="changedepartment">
filterable <el-option v-for="item in departmentlist" :key="item.id" :label="item.departmentName" :value="item.id">
placeholder="请选择科室"
style="width: 220px"
clearable
@clear="cleardepartment"
@change="changedepartment"
>
<el-option
v-for="item in departmentlist"
:key="item.id"
:label="item.departmentName"
:value="item.id"
>
</el-option> </el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="任务执行状态" prop="nodeExecuteStatus"> <el-form-item label="任务执行状态" prop="nodeExecuteStatus">
<el-select <el-select v-model="queryParams.nodeExecuteStatus" placeholder="请选择任务执行状态" clearable style="width: 220px">
v-model="queryParams.nodeExecuteStatus" <el-option v-for="item in nodeExecutList" :key="item.value" :label="item.label" :value="item.value">
placeholder="请选择任务执行状态"
clearable
style="width: 220px"
>
<el-option
v-for="item in nodeExecutList"
:key="item.value"
:label="item.label"
:value="item.value"
>
</el-option> </el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="任务执行类型" prop="taskExcuteType"> <el-form-item label="任务执行类型" prop="taskExcuteType">
<el-select <el-select v-model="queryParams.taskExcuteType" placeholder="请选择任务执行类型" clearable style="width: 220px">
v-model="queryParams.taskExcuteType" <el-option v-for="item in taskExcuteTypelist" :key="item.value" :label="item.label" :value="item.value">
placeholder="请选择任务执行类型"
clearable
style="width: 220px"
>
<el-option
v-for="item in taskExcuteTypelist"
:key="item.value"
:label="item.label"
:value="item.value"
>
</el-option> </el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="调查结果" prop="contentedFlag"> <el-form-item label="调查结果" prop="contentedFlag">
<el-select <el-select v-model="queryParams.contentedFlag" placeholder="请选择调查结果" clearable style="width: 220px">
v-model="queryParams.contentedFlag" <el-option v-for="item in contentedFlaglist" :key="item.value" :label="item.label" :value="item.value">
placeholder="请选择调查结果"
clearable
style="width: 220px"
>
<el-option
v-for="item in contentedFlaglist"
:key="item.value"
:label="item.label"
:value="item.value"
>
</el-option> </el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="批次" prop="sn"> <el-form-item label="批次" prop="sn">
<span> <span>
<sn <sn @on-template="messageontemplateword" :templateId="queryParams.sn"></sn>
@on-template="messageontemplateword" </span>
:templateId="queryParams.sn"
></sn>
</span>
</el-form-item> </el-form-item>
<el-form-item label="通话状态" prop="phoneNodeExecuteResultStatus"> <el-form-item label="通话状态" prop="phoneNodeExecuteResultStatus">
<el-select <el-select v-model="queryParams.phoneNodeExecuteResultStatus" placeholder="请选择通话状态" clearable
v-model="queryParams.phoneNodeExecuteResultStatus" style="width: 220px">
placeholder="请选择通话状态" <el-option v-for="item in SUCCESSlist" :key="item.value" :label="item.label" :value="item.value">
clearable
style="width: 220px"
>
<el-option
v-for="item in SUCCESSlist"
:key="item.value"
:label="item.label"
:value="item.value"
>
</el-option> </el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
</SearchFilter> </SearchFilter>
</div> </div>
<div ref="table"> <div ref="table">
<el-table <el-table :max-height="maxTableHeight" v-loading="loading" :data="patientInfoList"
:max-height="maxTableHeight" @selection-change="handleSelectionChange">
v-loading="loading"
:data="patientInfoList"
@selection-change="handleSelectionChange"
>
<!-- <el-table-column type="selection" width="55" /> --> <!-- <el-table-column type="selection" width="55" /> -->
<el-table-column label="序号" type="index" width="48" align="center" /> <el-table-column label="序号" type="index" width="48" align="center" />
<el-table-column label="患者姓名" align="center" prop="patientName" width="110"/> <el-table-column label="患者姓名" align="center" prop="patientName" width="110" />
<el-table-column label="患者电话" align="center" prop="patientPhone" width="110"/> <el-table-column label="患者电话" align="center" prop="patientPhone" width="110" />
<el-table-column <el-table-column label="路径名称" align="center" prop="manageRouteName" width="110" />
label="路径名称" <el-table-column label="问卷模板名称" align="center" prop="questionnaireName" width="120" />
align="center" <el-table-column label="话术名称" align="center" prop="scriptTemplateName" width="120" />
prop="manageRouteName" <el-table-column label="医院" align="center" prop="hospitalAgencyName" width="110" />
width="110" <el-table-column label="科室名称" align="center" prop="departmentName" width="110" />
<el-table-column label="执行状态" align="center" prop="nodeExecuteStatus" width="150">
/>
<el-table-column
label="问卷模板名称"
align="center"
prop="questionnaireName"
width="120"
/>
<el-table-column
label="话术名称"
align="center"
prop="scriptTemplateName"
width="120"
/>
<el-table-column
label="医院"
align="center"
prop="hospitalAgencyName"
width="110"
/>
<el-table-column
label="科室名称"
align="center"
prop="departmentName"
width="110"
/>
<el-table-column
label="执行状态"
align="center"
prop="nodeExecuteStatus"
width="150"
>
<template slot-scope="scope"> <template slot-scope="scope">
<span style="color: #67c23a"> <span style="color: #67c23a">
{{ {{ scope.row.nodeExecuteStatus == "EXECUTED" ? "已执行" : "" }}
scope.row.nodeExecuteStatus == "EXECUTED" ? "已执行" : "" </span>
}}</span
>
<span style="color: #f56c6c"> <span style="color: #f56c6c">
{{ {{ scope.row.nodeExecuteStatus == "UNEXECUTED" ? "未执行" : "" }}
scope.row.nodeExecuteStatus == "UNEXECUTED" ? "未执行" : "" </span>
}}</span
>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column <el-table-column label="通话状态" align="center" prop="phoneNodeExecuteResultStatus" width="150">
label="通话状态" <template slot-scope="scope">
align="center" <span style="color: #67c23a" v-if="scope.row.phoneNodeExecuteResultStatus == 'SUCCESS'">
prop="phoneNodeExecuteResultStatus" 已接通
width="150" </span>
>
<template slot-scope="scope">
<span style="color: #67c23a" v-if="scope.row.phoneNodeExecuteResultStatus == 'SUCCESS'">
已接通
</span>
<span style="color: #f56c6c" v-else> <span style="color: #f56c6c" v-else>
未接通 未接通
</span> </span>
<!-- {{scope.row.phoneNodeExecuteResultStatus == "SUCCESS" ? "已接通" : "未接通"}} -->
<!-- {{scope.row.phoneNodeExecuteResultStatus == "SUCCESS" ? "已接通" : "未接通"}} -->
</template> </template>
</el-table-column> </el-table-column>
<el-table-column <el-table-column label="反馈意见" align="center" prop="fillBlanksAnswer" width="150"
label="反馈意见" :show-overflow-tooltip="true" />
align="center" <el-table-column label="就诊时间" align="center" prop="visitDate" width="150" />
prop="fillBlanksAnswer" <el-table-column label="执行时间" align="center" prop="nodePlanTime" width="150" />
width="150"
:show-overflow-tooltip="true"
/>
<el-table-column
label="就诊时间"
align="center"
prop="visitDate"
width="150"
/>
<el-table-column
label="执行时间"
align="center"
prop="nodePlanTime"
width="150"
/>
<el-table-column label="调查结果" align="center" prop="contentedFlag" /> <el-table-column label="调查结果" align="center" prop="contentedFlag" />
<el-table-column <el-table-column label="操作" align="center" class-name="small-padding fixed-width" fixed="right" width="150">
label="操作"
align="center"
class-name="small-padding fixed-width"
fixed="right"
width="150"
>
<template slot-scope="scope"> <template slot-scope="scope">
<el-button <el-button
v-if=" v-if="
((scope.row.phoneDialMethod == 'AI' && scope.row.nodeExecuteStatus == 'EXECUTED') || (scope.row.phoneDialMethod == 'COMMON' && scope.row.nodeExecuteStatus == 'EXECUTED')) && scope.row.phoneNodeExecuteResultStatus == 'SUCCESS'"
((scope.row.phoneDialMethod == 'AI' && size="mini" type="text" @click="playback(scope.row)" icon="el-icon-headset">回放</el-button>
scope.row.nodeExecuteStatus == 'EXECUTED') || (
scope.row.phoneDialMethod == 'COMMON' &&
scope.row.nodeExecuteStatus == 'EXECUTED'
)) &&
scope.row.phoneNodeExecuteResultStatus == 'SUCCESS'
"
size="mini"
type="text"
@click="playback(scope.row)"
icon="el-icon-headset"
>回放</el-button
>
<el-button <el-button
v-if=" v-if="scope.row.nodeExecuteStatus == 'EXECUTED' && scope.row.taskNodeType == 'QUESTIONNAIRE_SCALE'"
scope.row.nodeExecuteStatus == 'EXECUTED' && size="mini" type="text" icon="el-icon-notebook-2" @click="questionlook(scope.row)">问卷查看</el-button>
scope.row.taskNodeType == 'QUESTIONNAIRE_SCALE'
"
size="mini"
type="text"
icon="el-icon-notebook-2"
@click="questionlook(scope.row)"
>问卷查看</el-button
>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
</div> </div>
<!-- <pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNum" <!-- <pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNum"
:limit.sync="queryParams.pageSize" @pagination="getList" /> --> :limit.sync="queryParams.pageSize" @pagination="getList" /> -->
<myPagination <myPagination v-show="total > 0" :total="total" :pageSize="queryParams.pageSize"
v-show="total > 0" :indexFromWrap="queryParams.pageNum" @updateCPage="updateCPage"></myPagination>
:total="total"
:pageSize="queryParams.pageSize"
:indexFromWrap="queryParams.pageNum"
@updateCPage="updateCPage"
></myPagination>
<el-dialog title="问卷查看" :visible.sync="questionshow" width="40%"> <el-dialog title="问卷查看" :visible.sync="questionshow" width="40%">
<div class="bottomheaderdata"> <div class="bottomheaderdata">
<div class="right"> <div class="right">
<div class="title" v-if="questiondata.totalScore || questiondata.totalScore ==0">总分{{ questiondata.totalScore }}</div> <div class="title" v-if="questiondata.totalScore || questiondata.totalScore == 0">
<div 总分{{ questiondata.totalScore }}
class="words" </div>
v-for="(item, index) in questiondata.subjectResultList" <div class="words" v-for="(item, index) in questiondata.subjectResultList" :key="index">
:key="index"
>
{{ index + 1 }}.{{ item.questionName }} {{ index + 1 }}.{{ item.questionName }}
<span v-if="item.questionType == 'MULTIPLE_CHOICE'" <span v-if="item.questionType == 'MULTIPLE_CHOICE'">单选题</span>
>单选题</span <span v-if="item.questionType == 'MULTIPLE_CHOICE_QUESTIONS'">多选题</span>
> <span v-if="item.questionType == 'SCORING_QUESTIONS'">打分题</span>
<span v-if="item.questionType == 'MULTIPLE_CHOICE_QUESTIONS'" <span v-if="item.questionType == 'COMBINATION_RADIO_SUBJECT'">组合单选题</span>
>多选题</span <span v-if="item.questionType == 'COMBINATION_MULTIPLE_SUBJECT'">组合多选题</span>
> <span v-if="item.questionType == 'COMBINATION_BLANKS_SUBJECT'">组合填空题</span>
<span v-if="item.questionType == 'SCORING_QUESTIONS'" <span v-if="item.questionType == 'FILL_IN_THE_BLANKS'">填空题</span>
>打分题</span <span v-if="item.questionType == 'COMBINATION_SCORING_SUBJECT'">组合打分题</span>
> <span v-if="item.questionType == 'DATE_BLANKS_SUBJECT'">日期填空题</span>
<span v-if="item.questionType == 'COMBINATION_RADIO_SUBJECT'" <span v-if="item.questionType == 'TIME_BLANKS_SUBJECT'">时间填空题</span>
>组合单选题</span <span v-if="item.questionType == 'FEEDBACK_BLANKS_SUBJECT'">反馈填空题</span>
> <el-radio-group v-if="
<span v-if="item.questionType == 'COMBINATION_MULTIPLE_SUBJECT'" item.questionType == 'MULTIPLE_CHOICE' ||
>组合多选题</span item.questionType == 'COMBINATION_RADIO_SUBJECT' ||
> item.questionType == 'SCORING_QUESTIONS' ||
<span v-if="item.questionType == 'COMBINATION_BLANKS_SUBJECT'" item.questionType == 'COMBINATION_SCORING_SUBJECT'" v-model="item.checked" class="custom-radio-group"
>组合填空题</span @change="radioGroupChange($event, item)">
> <el-radio disabled class="custom" v-for="(aitem, aindex) in item.optionResults" :key="aindex"
<span v-if="item.questionType == 'FILL_IN_THE_BLANKS'" :label="aitem.id" @change="radioChange($event, aitem, index)">
>填空题</span
>
<span v-if="item.questionType == 'COMBINATION_SCORING_SUBJECT'"
>组合打分题</span
>
<span v-if="item.questionType == 'DATE_BLANKS_SUBJECT'"
>日期填空题</span
>
<span v-if="item.questionType == 'TIME_BLANKS_SUBJECT'"
>时间填空题</span
>
<span v-if="item.questionType == 'FEEDBACK_BLANKS_SUBJECT'"
>反馈填空题</span
>
<el-radio-group
v-if="
item.questionType == 'MULTIPLE_CHOICE' ||
item.questionType == 'COMBINATION_RADIO_SUBJECT' ||
item.questionType == 'SCORING_QUESTIONS' ||
item.questionType == 'COMBINATION_SCORING_SUBJECT'
"
v-model="item.checked"
class="custom-radio-group"
@change="radioGroupChange($event, item)"
>
<el-radio
disabled
class="custom"
v-for="(aitem, aindex) in item.optionResults"
:key="aindex"
:label="aitem.id"
@change="radioChange($event, aitem, index)"
>
{{ aitem.optionName }} {{ aitem.optionName }}
</el-radio> </el-radio>
</el-radio-group> </el-radio-group>
<el-checkbox-group <el-checkbox-group v-model="checkeddata" @change="radioGroupChange($event, item, 'checkbox')" v-if="
v-model="checkeddata" item.questionType == 'MULTIPLE_CHOICE_QUESTIONS' ||
@change="radioGroupChange($event, item, 'checkbox')" item.questionType == 'COMBINATION_MULTIPLE_SUBJECT'">
v-if=" <el-checkbox disabled v-for="(aitem, aindex) in item.optionResults" :key="aindex" :label="aitem.id"
item.questionType == 'MULTIPLE_CHOICE_QUESTIONS' || @change="radioChangecheck($event, aitem, index, aindex)">
item.questionType == 'COMBINATION_MULTIPLE_SUBJECT'
"
>
<el-checkbox
disabled
v-for="(aitem, aindex) in item.optionResults"
:key="aindex"
:label="aitem.id"
@change="radioChangecheck($event, aitem, index, aindex)"
>
{{ aitem.optionName }} {{ aitem.optionName }}
</el-checkbox> </el-checkbox>
</el-checkbox-group> </el-checkbox-group>
<div <div v-if="
v-if=" item.questionType == 'FILL_IN_THE_BLANKS' ||
item.questionType == 'FILL_IN_THE_BLANKS' || item.questionType == 'COMBINATION_BLANKS_SUBJECT' ||
item.questionType == 'COMBINATION_BLANKS_SUBJECT' || item.questionType == 'FEEDBACK_BLANKS_SUBJECT'" class="tk">
item.questionType == 'FEEDBACK_BLANKS_SUBJECT' <el-input disabled v-model="item.fillBlanksAnswer" placeholder="请输入答案" type="textarea" />
"
class="tk"
>
<el-input
disabled
v-model="item.fillBlanksAnswer"
placeholder="请输入答案"
type="textarea"
/>
</div> </div>
<div <div v-if="item.questionType == 'DATE_BLANKS_SUBJECT'" style="margin: 20px 0 10px 30px">
v-if="item.questionType == 'DATE_BLANKS_SUBJECT'" <el-date-picker disabled @change="timepicker($event, index)" clearable v-model="item.fillBlanksAnswer"
style="margin: 20px 0 10px 30px" type="date" value-format="yyyy-MM-dd" placeholder="选择日期">
>
<el-date-picker
disabled
@change="timepicker($event, index)"
clearable
v-model="item.fillBlanksAnswer"
type="date"
value-format="yyyy-MM-dd"
placeholder="选择日期"
>
</el-date-picker> </el-date-picker>
</div> </div>
<div <div style="margin: 20px 0 10px 30px" v-if="item.questionType == 'TIME_BLANKS_SUBJECT'">
style="margin: 20px 0 10px 30px" <el-time-select disabled @change="timepickerselect($event, index)" clearable
v-if="item.questionType == 'TIME_BLANKS_SUBJECT'" v-model="item.fillBlanksAnswer" :picker-options="{
>
<el-time-select
disabled
@change="timepickerselect($event, index)"
clearable
v-model="item.fillBlanksAnswer"
:picker-options="{
start: '08:30', start: '08:30',
step: '00:30', step: '00:30',
end: '23:30', end: '23:30',
}" }" placeholder="选择时间">
placeholder="选择时间"
>
</el-time-select> </el-time-select>
</div> </div>
</div> </div>
</div> </div>
</div> </div>
</el-dialog> </el-dialog>
<el-dialog <el-dialog title="回放" :visible.sync="audioshow" width="800px" :before-close="audiohandleClose">
title="回放"
:visible.sync="audioshow"
width="800px"
:before-close="audiohandleClose"
>
<div class="audio"> <div class="audio">
<div style="display: flex"> <div style="display: flex">
<span class="name">姓名:{{ patientName }}</span> <span class="name">姓名:{{ patientName }}</span>
@ -499,7 +206,6 @@
<span class="content">{{ item.contextText }}</span> <span class="content">{{ item.contextText }}</span>
</div> </div>
</div> </div>
<div class="imagelistright" v-if="item.role == 'voice'"> <div class="imagelistright" v-if="item.role == 'voice'">
<div class="question"> <div class="question">
<span class="questionname">{{ item.contextText }}</span> <span class="questionname">{{ item.contextText }}</span>
@ -512,7 +218,7 @@
</div> </div>
</template> </template>
<script> <script>
import { uploadRobotPublishRecord, selectQuestionInfoList } from "@/api/manage/Satisfactionsurvey" import { uploadRobotPublishRecord, selectQuestionInfoList } from "@/api/manage/Satisfactionsurvey"
import SearchFilter from "../../components/SearchForm.vue"; import SearchFilter from "../../components/SearchForm.vue";
import { getAgencyList, selectAgencyList, } from "@/api/manage/selectAgencyList"; import { getAgencyList, selectAgencyList, } from "@/api/manage/selectAgencyList";
@ -521,17 +227,15 @@ import {
getPhoneDialVideo, getPhoneDialVideo,
} from "@/api/system/followup"; } from "@/api/system/followup";
import sn from "../components/sn"; import sn from "../components/sn";
export default { export default {
name: "visitout", name: "visitout",
components: { SearchFilter ,sn}, components: { SearchFilter, sn },
data() { data() {
return { return {
maxTableHeight: undefined, maxTableHeight: undefined,
// //
SUCCESSlist:[ SUCCESSlist: [
{ {
value: "SUCCESS", value: "SUCCESS",
label: "已接通", label: "已接通",
}, },
@ -583,7 +287,7 @@ export default {
AItrue: null, AItrue: null,
COMMONtrue: null, COMMONtrue: null,
foldshow: null, foldshow: null,
totalScoredata:0, totalScoredata: 0,
questiondata: { questiondata: {
totalScore: 0, // totalScore: 0, //
routeHandlePerson: null, routeHandlePerson: null,
@ -593,7 +297,7 @@ export default {
questionshow: false, questionshow: false,
checkeddata: [], checkeddata: [],
formlist: [], formlist: [],
patientName:null, patientName: null,
// //
@ -644,7 +348,7 @@ export default {
nodeExecuteStatus: '', nodeExecuteStatus: '',
taskExcuteType: null, taskExcuteType: null,
contentedFlag: null, contentedFlag: null,
phoneNodeExecuteResultStatus:null, phoneNodeExecuteResultStatus: null,
sn: null, sn: null,
}, },
show: false, show: false,
@ -689,21 +393,21 @@ export default {
}, },
// //
async playback(row) { async playback(row) {
console.log(row,'row') console.log(row, 'row')
this.patientName=row.patientName this.patientName = row.patientName
// await this.$confirm("?", "", { // await this.$confirm("?", "", {
// confirmButtonText: "", // confirmButtonText: "",
// cancelButtonText: "", // cancelButtonText: "",
// type: "warning", // type: "warning",
// }).then(() => { // }).then(() => {
getPhoneDialVideo(row.manageRouteNodeId).then((res) => { getPhoneDialVideo(row.manageRouteNodeId).then((res) => {
console.log(res, "res"); console.log(res, "res");
this.audioshow = true; this.audioshow = true;
this.audiourl = process.env.VUE_APP_BASE_API + res.data.phoneDialRecordVideo; this.audiourl = process.env.VUE_APP_BASE_API + res.data.phoneDialRecordVideo;
this.formlist = res.data.record; this.formlist = res.data.record;
setTimeout(() => { setTimeout(() => {
this.$refs.audioPlayer.load(); // this.$refs.audioPlayer.load(); //
// this.$refs.audioPlayer.play(); // this.$refs.audioPlayer.play();
// }, 1000); // }, 1000);
}); });
}); });
@ -717,7 +421,7 @@ export default {
// }); // });
this.questiondata = res.data this.questiondata = res.data
console.log( this.questiondata,' this.questiondata') console.log(this.questiondata, ' this.questiondata')
this.questiondata.subjectResultList.forEach((e) => { this.questiondata.subjectResultList.forEach((e) => {
// if(e.whetherScore==1){ // if(e.whetherScore==1){
// e.optionResults.forEach((el) => { // e.optionResults.forEach((el) => {
@ -926,7 +630,7 @@ export default {
// //
messageontemplateword(item) { messageontemplateword(item) {
console.log(item,'sn'); console.log(item, 'sn');
this.queryParams.sn = item.sn; this.queryParams.sn = item.sn;
}, },
@ -961,9 +665,9 @@ export default {
}, },
}, },
}; };
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
::v-deep .el-input.is-disabled .el-input__inner { ::v-deep .el-input.is-disabled .el-input__inner {
background-color: #fff !important; background-color: #fff !important;
color: black !important; color: black !important;
} }
@ -978,7 +682,7 @@ export default {
border-color: #1890ff !important; border-color: #1890ff !important;
} }
::v-deep .el-checkbox__input.is-disabled + span.el-checkbox__label { ::v-deep .el-checkbox__input.is-disabled+span.el-checkbox__label {
color: black !important; color: black !important;
} }
@ -1004,9 +708,10 @@ export default {
background-color: #1890ff !important; background-color: #1890ff !important;
} }
::v-deep .el-radio__input.is-disabled + span.el-radio__label { ::v-deep .el-radio__input.is-disabled+span.el-radio__label {
color: black !important; color: black !important;
} }
.titlenew { .titlenew {
font-size: 16px; font-size: 16px;
font-weight: 600; font-weight: 600;
@ -1017,6 +722,7 @@ export default {
::v-deep .el-table__fixed-right::before { ::v-deep .el-table__fixed-right::before {
height: 0px !important; height: 0px !important;
} }
.bottomheaderdata { .bottomheaderdata {
width: 99%; width: 99%;
background-color: #fff; background-color: #fff;
@ -1033,8 +739,10 @@ export default {
padding: 10px 50px 10px 10px; padding: 10px 50px 10px 10px;
} }
} }
.audio { .audio {
margin: 10px 0px 10px 0; margin: 10px 0px 10px 0;
.name { .name {
display: inline-block; display: inline-block;
margin: 20px margin: 20px
@ -1043,10 +751,12 @@ export default {
.imagelist { .imagelist {
padding-top: 10px; padding-top: 10px;
display: flex; display: flex;
img { img {
width: 40px; width: 40px;
height: 40px; height: 40px;
} }
.question { .question {
// width: 1000px; // width: 1000px;
// height: 30px; // height: 30px;
@ -1059,26 +769,31 @@ export default {
margin-top: 5px; margin-top: 5px;
margin-left: 5px; margin-left: 5px;
} }
.questionname { .questionname {
color: #559ca6; color: #559ca6;
padding-left: 10px; padding-left: 10px;
font-weight: 600; font-weight: 600;
} }
.content { .content {
color: #939394; color: #939394;
} }
} }
.imagelistright { .imagelistright {
padding-top: 10px; padding-top: 10px;
display: flex; display: flex;
// float: right; // float: right;
justify-content: flex-end; justify-content: flex-end;
align-items: center; align-items: center;
img { img {
width: 40px; width: 40px;
height: 40px; height: 40px;
margin-left: 5px; margin-left: 5px;
} }
.question { .question {
// width: 200px; // width: 200px;
// height: 30px; // height: 30px;
@ -1094,6 +809,7 @@ export default {
color: #fff; color: #fff;
text-align: center; text-align: center;
} }
// .questionname { // .questionname {
// color: #5da0aa; // color: #5da0aa;
// padding-left: 10px; // padding-left: 10px;
@ -1103,9 +819,11 @@ export default {
} }
} }
} }
audio { audio {
width: 350px; width: 350px;
} }
.tk { .tk {
::v-deep .el-textarea__inner { ::v-deep .el-textarea__inner {
margin: 20px 0 10px 30px; margin: 20px 0 10px 30px;

View File

@ -552,13 +552,10 @@ export default {
crowNamechange(e) { crowNamechange(e) {
this.form.crowName = this.optionscrowName.find(f => f.id == e).crowdName this.form.crowName = this.optionscrowName.find(f => f.id == e).crowdName
this.form.crowdId = e this.form.crowdId = e
}, },
/** 查询素材信息列表 */ /** 查询素材信息列表 */
getList() { getList() {
this.loading = true; this.loading = true;
this.queryParams.params = {};
listMaterials(this.queryParams).then(response => { listMaterials(this.queryParams).then(response => {
this.materialsList = response.rows; this.materialsList = response.rows;
this.total = response.total; this.total = response.total;

View File

@ -4,196 +4,80 @@
<div class="card-table"> <div class="card-table">
<div :class="type == 'card' ? 'bluediv' : ''" @click="typeitem"> <div :class="type == 'card' ? 'bluediv' : ''" @click="typeitem">
<img src="../../../assets/manage/kapian.png" alt="" /> <img src="../../../assets/manage/kapian.png" alt="" />
<img <img src="../../../assets/manage/bluekapian.png" alt="" v-if="type == 'card'" />
src="../../../assets/manage/bluekapian.png"
alt=""
v-if="type == 'card'"
/>
</div> </div>
<div :class="type == 'table' ? 'bluediv' : ''" @click="typeitemtable"> <div :class="type == 'table' ? 'bluediv' : ''" @click="typeitemtable">
<img src="../../../assets/manage/liebiao.png" alt="" /> <img src="../../../assets/manage/liebiao.png" alt="" />
<img <img src="../../../assets/manage/blueliebiao.png" alt="" v-if="type == 'table'" />
src="../../../assets/manage/blueliebiao.png"
alt=""
v-if="type == 'table'"
/>
</div> </div>
</div> </div>
<SearchFilter <SearchFilter :labelWidths="280" style="width: calc(100% - 80px)" :widths="80" size="small" @search="handleQuery"
:labelWidths="280" @reset="resetQuery" @minShowCtrol="getMaxTableHeight">
style="width: calc(100% - 80px)"
:widths="80"
size="small"
@search="handleQuery"
@reset="resetQuery"
@minShowCtrol="getMaxTableHeight"
>
<el-form-item label="患者姓名" prop="patientName"> <el-form-item label="患者姓名" prop="patientName">
<el-input <el-input v-model="queryParams.patientName" placeholder="请输入患者姓名" clearable @keyup.enter.native="handleQuery"
v-model="queryParams.patientName" style="width: 200px" />
placeholder="请输入患者姓名"
clearable
@keyup.enter.native="handleQuery"
style="width: 200px"
/>
</el-form-item> </el-form-item>
<el-form-item label="患者电话" prop="patientPhone"> <el-form-item label="患者电话" prop="patientPhone">
<el-input <el-input v-model="queryParams.patientPhone" placeholder="请输入患者电话" clearable @keyup.enter.native="handleQuery"
v-model="queryParams.patientPhone" style="width: 200px" />
placeholder="请输入患者电话"
clearable
@keyup.enter.native="handleQuery"
style="width: 200px"
/>
</el-form-item> </el-form-item>
<el-form-item label="身份证号" prop="cardNo"> <el-form-item label="身份证号" prop="cardNo">
<el-input <el-input v-model="queryParams.cardNo" placeholder="请输入患者身份证号" clearable @keyup.enter.native="handleQuery"
v-model="queryParams.cardNo" style="width: 200px" />
placeholder="请输入患者身份证号"
clearable
@keyup.enter.native="handleQuery"
style="width: 200px"
/>
</el-form-item> </el-form-item>
<el-form-item label="诊断" prop="mainDiagnosis"> <el-form-item label="诊断" prop="mainDiagnosis">
<el-input <el-input v-model="queryParams.mainDiagnosis" placeholder="请输入诊断" clearable style="width: 200px"
v-model="queryParams.mainDiagnosis" @keyup.enter.native="handleQuery" />
placeholder="请输入诊断"
clearable
style="width: 200px"
@keyup.enter.native="handleQuery"
/>
</el-form-item> </el-form-item>
<el-form-item label="患者来源" prop="patientSource"> <el-form-item label="患者来源" prop="patientSource">
<el-select <el-select v-model="queryParams.patientSource" placeholder="请选择患者来源" clearable style="width: 200px">
v-model="queryParams.patientSource" <el-option v-for="dict in dict.type.patient_source" :key="dict.value" :label="dict.label"
placeholder="请选择患者来源" :value="dict.value" />
clearable
style="width: 200px"
>
<el-option
v-for="dict in dict.type.patient_source"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="就诊方式" prop="visitMethod"> <el-form-item label="就诊方式" prop="visitMethod">
<el-select <el-select v-model="queryParams.visitMethod" placeholder="请选择就诊方式" clearable style="width: 200px">
v-model="queryParams.visitMethod" <el-option v-for="dict in dict.type.visit_method" :key="dict.value" :label="dict.label"
placeholder="请选择就诊方式" :value="dict.value" />
clearable
style="width: 200px"
>
<el-option
v-for="dict in dict.type.visit_method"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="就诊时间" prop="visitDateStart"> <el-form-item label="就诊时间" prop="visitDateStart">
<el-date-picker <el-date-picker v-model="visitDate" type="daterange" range-separator="" start-placeholder="开始日期"
v-model="visitDate" style="width: 200px" value-format="yyyy-MM-dd" end-placeholder="结束日期">
type="daterange"
range-separator="至"
start-placeholder="开始日期"
style="width: 200px"
value-format="yyyy-MM-dd"
end-placeholder="结束日期"
>
</el-date-picker> </el-date-picker>
</el-form-item> </el-form-item>
<el-form-item label="医院" prop="hospitalAgencyId"> <el-form-item label="医院" prop="hospitalAgencyId">
<el-select <el-select v-model="queryParams.hospitalAgencyId" filterable placeholder="请选择医院" style="width: 200px"
v-model="queryParams.hospitalAgencyId" clearable @clear="clearhospitalAgency" @change="changehospitalAgency">
filterable <el-option v-for="item in hospitalAgencylist" :key="item.id" :label="item.agencyName" :value="item.id">
placeholder="请选择医院"
style="width: 200px"
clearable
@clear="clearhospitalAgency"
@change="changehospitalAgency"
>
<el-option
v-for="item in hospitalAgencylist"
:key="item.id"
:label="item.agencyName"
:value="item.id"
>
</el-option> </el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="院区" prop="campusAgencyId"> <el-form-item label="院区" prop="campusAgencyId">
<el-select <el-select v-model="queryParams.campusAgencyId" filterable placeholder="请选择院区" style="width: 200px" clearable
v-model="queryParams.campusAgencyId" @clear="clearcampusAgency" @change="changecampusAgency">
filterable <el-option v-for="item in campusAgencylist" :key="item.id" :label="item.agencyName" :value="item.id">
placeholder="请选择院区"
style="width: 200px"
clearable
@clear="clearcampusAgency"
@change="changecampusAgency"
>
<el-option
v-for="item in campusAgencylist"
:key="item.id"
:label="item.agencyName"
:value="item.id"
>
</el-option> </el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="科室" prop="departmentId"> <el-form-item label="科室" prop="departmentId">
<el-select <el-select v-model="queryParams.departmentId" filterable placeholder="请选择科室" style="width: 200px" clearable
v-model="queryParams.departmentId" @clear="cleardepartment" @change="changedepartment">
filterable <el-option v-for="item in departmentlist" :key="item.id" :label="item.departmentName" :value="item.id">
placeholder="请选择科室"
style="width: 200px"
clearable
@clear="cleardepartment"
@change="changedepartment"
>
<el-option
v-for="item in departmentlist"
:key="item.id"
:label="item.departmentName"
:value="item.id"
>
</el-option> </el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="病区" prop="wardId"> <el-form-item label="病区" prop="wardId">
<el-select <el-select v-model="queryParams.wardId" filterable placeholder="请选择病区" style="width: 200px" clearable>
v-model="queryParams.wardId" <el-option v-for="item in wardlist" :key="item.id" :label="item.departmentName" :value="item.id">
filterable
placeholder="请选择病区"
style="width: 200px"
clearable
>
<el-option
v-for="item in wardlist"
:key="item.id"
:label="item.departmentName"
:value="item.id"
>
</el-option> </el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="主治医生" prop="attendingPhysicianId"> <el-form-item label="主治医生" prop="attendingPhysicianId">
<el-select <el-select v-model="queryParams.attendingPhysicianId" style="width: 200px" filterable placeholder="请选择主治医生"
v-model="queryParams.attendingPhysicianId" clearable>
style="width: 200px" <el-option v-for="item in attendingPhysicianlist" :key="item.userId" :label="item.nickName"
filterable :value="item.userId">
placeholder="请选择主治医生"
clearable
>
<el-option
v-for="item in attendingPhysicianlist"
:key="item.userId"
:label="item.nickName"
:value="item.userId"
>
</el-option> </el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
@ -204,19 +88,10 @@
</SearchFilter> </SearchFilter>
</div> </div>
<div ref="table" v-if="type == 'table'"> <div ref="table" v-if="type == 'table'">
<el-table <el-table :max-height="maxTableHeight" v-loading="loading" :data="patientInfoList">
:max-height="maxTableHeight"
v-loading="loading"
:data="patientInfoList"
>
<el-table-column label="序号" type="index" width="48" align="center" /> <el-table-column label="序号" type="index" width="48" align="center" />
<el-table-column label="患者姓名" align="center" prop="patientName" /> <el-table-column label="患者姓名" align="center" prop="patientName" />
<el-table-column <el-table-column label="患者电话" align="center" prop="patientPhone" width="120" />
label="患者电话"
align="center"
prop="patientPhone"
width="120"
/>
<el-table-column label="性别" align="center" prop="sex"> <el-table-column label="性别" align="center" prop="sex">
<template slot-scope="scope"> <template slot-scope="scope">
{{ scope.row.sex == "MALE" ? "男" : "" }} {{ scope.row.sex == "MALE" ? "男" : "" }}
@ -224,12 +99,7 @@
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="年龄" align="center" prop="age" /> <el-table-column label="年龄" align="center" prop="age" />
<el-table-column <el-table-column label="出生日期" align="center" prop="birthDate" width="130" />
label="出生日期"
align="center"
prop="birthDate"
width="130"
/>
<!-- <el-table-column label="签约状态" align="center" prop="signStatus"> <!-- <el-table-column label="签约状态" align="center" prop="signStatus">
<template slot-scope="scope"> <template slot-scope="scope">
<dict-tag :options="dict.type.sign_status" :value="scope.row.signStatus" /> <dict-tag :options="dict.type.sign_status" :value="scope.row.signStatus" />
@ -241,68 +111,28 @@
</template> </template>
</el-table-column> --> </el-table-column> -->
<!-- <el-table-column label="开证医生" align="center" prop="certificateIssuingDoctor" /> --> <!-- <el-table-column label="开证医生" align="center" prop="certificateIssuingDoctor" /> -->
<el-table-column <el-table-column label="就诊时间" align="center" prop="visitDate" width="130">
label="就诊时间"
align="center"
prop="visitDate"
width="130"
>
<template slot-scope="scope"> <template slot-scope="scope">
<span>{{ parseTime(scope.row.visitDate, "{y}-{m}-{d}") }}</span> <span>{{ parseTime(scope.row.visitDate, "{y}-{m}-{d}") }}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="诊断" align="center" prop="mainDiagnosis" /> <el-table-column label="诊断" align="center" prop="mainDiagnosis" />
<!-- <el-table-column label="入院时间" align="center" prop="admissionTime" width='130' /> --> <!-- <el-table-column label="入院时间" align="center" prop="admissionTime" width='130' /> -->
<el-table-column <el-table-column label="医院" align="center" prop="hospitalAgencyName" width="130" />
label="医院" <el-table-column label="院区" align="center" prop="campusAgencyName" width="130" />
align="center" <el-table-column label="科室名称" align="center" prop="departmentName" width="130" />
prop="hospitalAgencyName" <el-table-column label="病区名称" align="center" prop="wardName" width="130" />
width="130" <el-table-column label="住院/门诊号" align="center" prop="inHospitalNumber" width="130" />
/> <el-table-column label="主治医生" align="center" prop="attendingPhysicianName" />
<el-table-column
label="院区"
align="center"
prop="campusAgencyName"
width="130"
/>
<el-table-column
label="科室名称"
align="center"
prop="departmentName"
width="130"
/>
<el-table-column
label="病区名称"
align="center"
prop="wardName"
width="130"
/>
<el-table-column
label="住院/门诊号"
align="center"
prop="inHospitalNumber"
width="130"
/>
<el-table-column
label="主治医生"
align="center"
prop="attendingPhysicianName"
/>
<el-table-column label="就诊方式" align="center" prop="visitMethod"> <el-table-column label="就诊方式" align="center" prop="visitMethod">
<template slot-scope="scope"> <template slot-scope="scope">
<dict-tag <dict-tag :options="dict.type.visit_method" :value="scope.row.visitMethod" />
:options="dict.type.visit_method"
:value="scope.row.visitMethod"
/>
</template> </template>
</el-table-column> </el-table-column>
<!-- <el-table-column label="出院方式" align="center" prop="dischargeMethod" /> --> <!-- <el-table-column label="出院方式" align="center" prop="dischargeMethod" /> -->
<el-table-column label="患者来源" align="center" prop="patientSource"> <el-table-column label="患者来源" align="center" prop="patientSource">
<template slot-scope="scope"> <template slot-scope="scope">
<dict-tag <dict-tag :options="dict.type.patient_source" :value="scope.row.patientSource" />
:options="dict.type.patient_source"
:value="scope.row.patientSource"
/>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="住址" align="center" prop="address" /> <el-table-column label="住址" align="center" prop="address" />
@ -313,33 +143,17 @@
v-hasPermi="['manage:patientInfo:edit']">修改</el-button> v-hasPermi="['manage:patientInfo:edit']">修改</el-button>
<el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)" <el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)"
v-hasPermi="['manage:patientInfo:remove']">删除</el-button> --> v-hasPermi="['manage:patientInfo:remove']">删除</el-button> -->
<el-button <el-button size="mini" type="text" @click="handleAuthRole(scope.row)">详情</el-button>
size="mini" <el-button size="mini" type="text" @click="handleedit(scope.row)">画像编辑</el-button>
type="text"
@click="handleAuthRole(scope.row)"
>详情</el-button
>
<el-button size="mini" type="text" @click="handleedit(scope.row)"
>画像编辑</el-button
>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
</div> </div>
<div ref="table" v-else-if="type == 'card'"> <div ref="table" v-else-if="type == 'card'">
<cardlist <cardlist :maxTableHeight="maxTableHeight" :patientInfoList="patientInfoList"></cardlist>
:maxTableHeight="maxTableHeight"
:patientInfoList="patientInfoList"
></cardlist>
</div> </div>
<myPagination <myPagination v-show="total > 0" :total="total" :pageSize="queryParams.pageSize"
v-show="total > 0" :indexFromWrap="queryParams.pageNum" :indexFrom="indexFrom" @updateCPage="updateCPage"></myPagination>
:total="total"
:pageSize="queryParams.pageSize"
:indexFromWrap="queryParams.pageNum"
:indexFrom="indexFrom"
@updateCPage="updateCPage"
></myPagination>
</div> </div>
</template> </template>
@ -505,7 +319,6 @@ export default {
/** 查询患者信息列表 */ /** 查询患者信息列表 */
getList() { getList() {
this.loading = true; this.loading = true;
this.queryParams.params = {};
const loading = this.$loading({ const loading = this.$loading({
lock: true, lock: true,
text: "数据加载中", text: "数据加载中",
@ -547,13 +360,11 @@ export default {
typeitem() { typeitem() {
this.type = "card"; this.type = "card";
this.queryParams.pageSize = 100; this.queryParams.pageSize = 100;
// console.log( this.queryParams.pageSize)
this.getList(); this.getList();
}, },
typeitemtable() { typeitemtable() {
this.type = "table"; this.type = "table";
this.queryParams.pageSize = 10; this.queryParams.pageSize = 10;
// console.log( this.queryParams.pageSize)
this.getList(); this.getList();
}, },
/** 重置按钮操作 */ /** 重置按钮操作 */
@ -569,7 +380,6 @@ export default {
pageSize: 10, pageSize: 10,
}; };
} }
this.admissionTime = []; this.admissionTime = [];
this.queryParams.admissionTimeStart = null; this.queryParams.admissionTimeStart = null;
this.queryParams.admissionTimeEnd = null; this.queryParams.admissionTimeEnd = null;

View File

@ -124,7 +124,6 @@ export default {
/** 查询信息列表 */ /** 查询信息列表 */
getList() { getList() {
this.loading = true; this.loading = true;
this.queryParams.params = {};
satisfactionSurvey(this.queryParams).then(response => { satisfactionSurvey(this.queryParams).then(response => {
response.rows.forEach(e => { response.rows.forEach(e => {
e.birthDate ? e.age = getAge(e.birthDate) : e.age e.birthDate ? e.age = getAge(e.birthDate) : e.age