Merge remote-tracking branch 'origin/dev' into dev
This commit is contained in:
commit
34248e1494
9
src/api/system/SatisfactionQuestionnaireDetails.js
Normal file
9
src/api/system/SatisfactionQuestionnaireDetails.js
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
import request from '@/utils/request'
|
||||||
|
|
||||||
|
|
||||||
|
export function selectQuestionnaireResult(patientQuestionSubmitResultId) {
|
||||||
|
return request({
|
||||||
|
url: `/system/patientQuestionSubmitResult/selectQuestionnaireResult?patientQuestionSubmitResultId=${patientQuestionSubmitResultId}`,
|
||||||
|
method: 'get',
|
||||||
|
})
|
||||||
|
}
|
||||||
10
src/api/system/satisfactionSurvey.js
Normal file
10
src/api/system/satisfactionSurvey.js
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
import request from '@/utils/request'
|
||||||
|
|
||||||
|
// 列表
|
||||||
|
export function satisfactionSurvey(query) {
|
||||||
|
return request({
|
||||||
|
url: '/system/patientQuestionSubmitResult/satisfactionSurvey',
|
||||||
|
method: 'get',
|
||||||
|
params: query
|
||||||
|
})
|
||||||
|
}
|
||||||
@ -102,7 +102,7 @@
|
|||||||
<div v-for="uitem in item.nodeList" :key="uitem.id">
|
<div v-for="uitem in item.nodeList" :key="uitem.id">
|
||||||
<div class="texts">
|
<div class="texts">
|
||||||
<div class="text" style="font-size:14px;font-weight: 400;">
|
<div class="text" style="font-size:14px;font-weight: 400;">
|
||||||
任务内容: {{ uitem.taskType == 'PHONE_OUTBOUND' ? "电话外呼" : "" }}
|
任务内容:{{ uitem.taskType == 'PHONE_OUTBOUND' ? "电话外呼" : "" }}
|
||||||
{{ uitem.taskType == 'QUESTIONNAIRE_SCALE' ? "问卷量表" : "" }}
|
{{ uitem.taskType == 'QUESTIONNAIRE_SCALE' ? "问卷量表" : "" }}
|
||||||
{{ uitem.taskType == 'PROPAGANDA_ARTICLE' ? "宣教文案" : "" }}
|
{{ uitem.taskType == 'PROPAGANDA_ARTICLE' ? "宣教文案" : "" }}
|
||||||
{{ uitem.taskType == 'TEXT_REMIND' ? "文字提醒" : "" }}
|
{{ uitem.taskType == 'TEXT_REMIND' ? "文字提醒" : "" }}
|
||||||
@ -110,32 +110,85 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="text" style="font-size:14px;font-weight: 400;"
|
<div class="text" style="font-size:14px;font-weight: 400;"
|
||||||
v-if="uitem.taskType == 'PHONE_OUTBOUND'">
|
v-if="uitem.taskType == 'PHONE_OUTBOUND'">
|
||||||
电话模板:{{ uitem.phoneTemplateName }}
|
话术模板:{{ uitem.phoneTemplateName }}
|
||||||
</div>
|
</div>
|
||||||
<div class="text" style="font-size:14px;font-weight: 400;"
|
<div class="text" style="font-size:14px;font-weight: 400;"
|
||||||
v-if="uitem.taskType == 'QUESTIONNAIRE_SCALE'">
|
v-if="uitem.taskType == 'QUESTIONNAIRE_SCALE'">
|
||||||
问卷模板:{{ uitem.questionnaireName }}
|
问卷模板:{{ uitem.questionnaireName }}
|
||||||
</div>
|
</div>
|
||||||
<div class="text" style="font-size:14px;font-weight: 400;"
|
<div class="text" style="font-size:14px;font-weight: 400;"
|
||||||
v-if="uitem.taskType == 'QUESTIONNAIRE_SCALE'">
|
v-if="uitem.taskType == 'QUESTIONNAIRE_SCALE'">
|
||||||
问卷有效期:{{ uitem.questionExpirationDate }}天
|
问卷有效期:{{ uitem.questionExpirationDate }}天
|
||||||
</div>
|
</div>
|
||||||
<div class="text" style="font-size:14px;font-weight: 400;"
|
<div class="text" style="font-size:14px;font-weight: 400;"
|
||||||
v-if="uitem.taskType == 'PROPAGANDA_ARTICLE'">
|
v-if="uitem.taskType == 'PROPAGANDA_ARTICLE'">
|
||||||
宣教模板:{{ uitem.propagandaTitle }}
|
宣教模板:{{ uitem.propagandaTitle }}
|
||||||
</div>
|
</div>
|
||||||
<div class="textarea" v-if="uitem.taskType == 'TEXT_REMIND'">
|
<div class="textarea" v-if="uitem.taskType == 'TEXT_REMIND'">
|
||||||
提醒内容:{{ uitem.textRemindContent }}
|
提醒内容:{{ uitem.textRemindContent }}
|
||||||
</div>
|
</div>
|
||||||
<div class="text" style="font-size:14px;font-weight: 400;"
|
<div class="text" style="font-size:14px;font-weight: 400;"
|
||||||
v-if="uitem.taskType == 'ARTIFICIAL_FOLLOW_UP'">
|
v-if="uitem.taskType == 'ARTIFICIAL_FOLLOW_UP'">
|
||||||
人工随访模板:{{ uitem.questionnaireName }}
|
人工随访模板:{{ uitem.questionnaireName }}
|
||||||
|
</div>
|
||||||
|
<div class="text" style="font-size:14px;font-weight: 400;"
|
||||||
|
v-if="uitem.taskType == 'ARTIFICIAL_FOLLOW_UP'">
|
||||||
|
随访详情:<el-button style="padding: 6px 10px;">预览</el-button>
|
||||||
|
</div>
|
||||||
|
<div class="text" style="font-size:14px;font-weight: 400;"
|
||||||
|
v-if="uitem.taskType == 'QUESTIONNAIRE_SCALE'">
|
||||||
|
问卷模板详情:<el-button @click="lookquestion(uitem)" style="padding: 6px 10px;">预览</el-button>
|
||||||
|
</div>
|
||||||
|
<div class="text" style="font-size:14px;font-weight: 400;"
|
||||||
|
v-if="uitem.taskType == 'PROPAGANDA_ARTICLE'">
|
||||||
|
宣教模板详情:<el-button @click="lookpropaganda(uitem)"
|
||||||
|
style="padding: 6px 10px;">预览</el-button>
|
||||||
|
</div>
|
||||||
|
<div class="text" style="font-size:14px;font-weight: 400;"
|
||||||
|
v-if="uitem.taskType == 'PHONE_OUTBOUND'">
|
||||||
|
话术模板详情:<el-button @click="lookphone(uitem)" style="padding: 6px 10px;">预览</el-button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<!-- 话术预览弹框 -->
|
||||||
|
<el-dialog title="话术预览" :visible.sync="phoneopen" width="30%" :before-close="openfalse">
|
||||||
|
<img style="width:200px" :src="baseUrl + lookitem.scriptFilePath" />
|
||||||
|
<span slot="footer" class="dialog-footer">
|
||||||
|
<el-button @click="phoneopen = false">确 定</el-button>
|
||||||
|
</span>
|
||||||
|
</el-dialog>
|
||||||
|
<!-- 宣教预览弹框 -->
|
||||||
|
<el-dialog title="宣教预览" :visible.sync="propagandaopen" width="30%" :before-close="openfalse">
|
||||||
|
<div class="titletop">文章模板:{{ lookitem.propagandaTitle }}</div>
|
||||||
|
<div class="bodytop">
|
||||||
|
<div class="titledata">{{ lookitem.propagandaTitle }}</div>
|
||||||
|
<div>
|
||||||
|
<img :src="baseUrl + lookitem.propagandaCoverPath" alt="" />
|
||||||
|
<div class="know">知识卡片</div>
|
||||||
|
<div class="knowlist">
|
||||||
|
{{ lookitem.propagandaContent }}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</el-dialog>
|
||||||
|
<!-- 问卷预览弹框 -->
|
||||||
|
<questionopen ref="question" :lookitem="lookitem"></questionopen>
|
||||||
|
<!-- <el-dialog title="问卷预览" :visible.sync="questionopen" width="30%" :before-close="openfalse">
|
||||||
|
<div class="titletop">文章模板:{{ lookitem.propagandaTitle }}</div>
|
||||||
|
<div class="bodytop">
|
||||||
|
<div class="titledata">{{ lookitem.propagandaTitle }}</div>
|
||||||
|
<div>
|
||||||
|
<img :src="baseUrl + lookitem.propagandaCoverPath" alt="" />
|
||||||
|
<div class="know">知识卡片</div>
|
||||||
|
<div class="knowlist">
|
||||||
|
{{ lookitem.propagandaContent }}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</el-dialog> -->
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
@ -146,21 +199,48 @@ import {
|
|||||||
audit
|
audit
|
||||||
} from '@/api/manage/Auditing.js'
|
} from '@/api/manage/Auditing.js'
|
||||||
import { getAge } from "@/utils/age";
|
import { getAge } from "@/utils/age";
|
||||||
|
import questionopen from '../components/questionopen.vue';
|
||||||
export default {
|
export default {
|
||||||
|
components: {
|
||||||
|
questionopen,
|
||||||
|
},
|
||||||
name: "Auditing",
|
name: "Auditing",
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
|
baseUrl: process.env.VUE_APP_BASE_API,
|
||||||
activeNames: ['-1', '-2', '-3'],
|
activeNames: ['-1', '-2', '-3'],
|
||||||
list: {
|
list: {},
|
||||||
visitMethod: "BE_IN_HOSPITAL",
|
|
||||||
},
|
|
||||||
nodelist: [],
|
nodelist: [],
|
||||||
|
lookitem: {},
|
||||||
|
phoneopen: false,
|
||||||
|
propagandaopen: false,
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
created() {
|
created() {
|
||||||
this.info();
|
this.info();
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
|
//查看宣教模板
|
||||||
|
lookpropaganda(item) {
|
||||||
|
this.lookitem = item.detailInfo
|
||||||
|
this.propagandaopen = true
|
||||||
|
},
|
||||||
|
//查看话术模板
|
||||||
|
lookphone(item) {
|
||||||
|
this.lookitem = item.detailInfo
|
||||||
|
this.phoneopen = true
|
||||||
|
},
|
||||||
|
//查看问卷模板
|
||||||
|
lookquestion(item) {
|
||||||
|
this.lookitem = item.detailInfo
|
||||||
|
this.$refs.question.questionopentrue()
|
||||||
|
},
|
||||||
|
//关闭预览
|
||||||
|
openfalse() {
|
||||||
|
this.phoneopen = false
|
||||||
|
this.propagandaopen = false
|
||||||
|
this.lookitem = {}
|
||||||
|
},
|
||||||
//审核
|
//审核
|
||||||
auditing() {
|
auditing() {
|
||||||
this.$prompt('请输入审核备注信息?', '提示', {
|
this.$prompt('请输入审核备注信息?', '提示', {
|
||||||
@ -195,13 +275,8 @@ export default {
|
|||||||
res.data.birthDate ? res.data.age = getAge(res.data.birthDate) : ''
|
res.data.birthDate ? res.data.age = getAge(res.data.birthDate) : ''
|
||||||
this.list = res.data
|
this.list = res.data
|
||||||
})
|
})
|
||||||
getRouteNodeList({ patientId: this.$route.query.patientId, taskCreateType: 'MANUAL_CREATE' }).then(res => {
|
getRouteNodeList({ patientId: this.$route.query.patientId, taskCreateType: 'MANUAL_CREATE', routeCheckStatus: "UNAUDITED" }).then(res => {
|
||||||
this.nodelist = res.data
|
this.nodelist = res.data
|
||||||
this.nodelist.forEach(e => {
|
|
||||||
let text
|
|
||||||
e.suitRange == 'IN_THE_HOSPITAL' ? text = '在院' : e.suitRange == 'DISCHARGE' ? text = '出院' : e.suitRange == 'OUTPATIENT_SERVICE' ? text = '门诊' : e.suitRange == 'OUTPATIENT_SERVICE_DISCHARGE' ? text = '门诊+出院' : text = ""
|
|
||||||
e.title = '任务名称:' + e.routeName + +'适用范围:' + text
|
|
||||||
})
|
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
cancel() {
|
cancel() {
|
||||||
@ -318,4 +393,44 @@ export default {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.titletop {
|
||||||
|
font-size: 16px;
|
||||||
|
font-weight: 700;
|
||||||
|
}
|
||||||
|
|
||||||
|
.bodytop {
|
||||||
|
position: relative;
|
||||||
|
top: 20px;
|
||||||
|
height: 500px;
|
||||||
|
overflow: auto;
|
||||||
|
border: 1px solid #e2e2e2;
|
||||||
|
|
||||||
|
.titledata {
|
||||||
|
margin: 30px 0px 15px 30px;
|
||||||
|
top: 14px;
|
||||||
|
font-size: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.audiotop {
|
||||||
|
margin: 10px 0px 10px 30px;
|
||||||
|
}
|
||||||
|
|
||||||
|
img {
|
||||||
|
// width: 100%;
|
||||||
|
// width: 362px;
|
||||||
|
// height: 127px;
|
||||||
|
margin: 0px 0px 0px 30px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.know {
|
||||||
|
margin: 11px 0px 10px 30px;
|
||||||
|
font-size: 16px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.knowlist {
|
||||||
|
margin: 10px 0px 10px 30px;
|
||||||
|
font-size: 16px;
|
||||||
|
}
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|||||||
435
src/views/manage/LookAuditing/index.vue
Normal file
435
src/views/manage/LookAuditing/index.vue
Normal file
@ -0,0 +1,435 @@
|
|||||||
|
<template>
|
||||||
|
<div style="background-color:#F1F3F5">
|
||||||
|
<div slot="footer" style="float: right;padding:10px 10px 0 0;height:35px">
|
||||||
|
<el-button size="mini" @click="cancel">返 回</el-button>
|
||||||
|
</div>
|
||||||
|
<div class="card">
|
||||||
|
<div class="cardleft">
|
||||||
|
<div class="title">
|
||||||
|
<div style="display: flex;align-items:center">
|
||||||
|
<img class="headsculpture" v-if="list.sex == 'MALE'" src="../../../assets/manage/touxiang.png">
|
||||||
|
<img class="headsculpture" v-else src="../../../assets/manage/nvtouxiang.png">
|
||||||
|
<div class="name">
|
||||||
|
{{ list.patientName ? list.patientName : '' }}
|
||||||
|
</div>
|
||||||
|
<div class="genderandage">
|
||||||
|
<span> {{ list.sex == 'MALE' ? "男" : '' }}
|
||||||
|
{{ list.sex == 'FEMALE' ? "女" : '' }}
|
||||||
|
</span>
|
||||||
|
<span v-if="list.sex && list.age" style="padding: 0 6px;">|</span>
|
||||||
|
<span v-if="list.age">{{ list.age }}岁</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="source">
|
||||||
|
<div class="situation item">
|
||||||
|
{{ list.visitMethod == 'OUTPATIENT_SERVICE' ? '门诊' : '' }}
|
||||||
|
{{ list.visitMethod == 'BE_IN_HOSPITAL' ? '住院' : '' }}
|
||||||
|
</div>
|
||||||
|
<div class="item" style="color:#00E06E;border-color:#00E06E"
|
||||||
|
v-if="list.patientSource == 'WE_CHAT_OFFICIAL_ACCOUNT'">
|
||||||
|
<img src="../../../assets/manage/gzh.png" alt="">
|
||||||
|
<div>
|
||||||
|
公众号
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="item" style="color:#339DE5;border-color:#339DE5"
|
||||||
|
v-if="list.patientSource == 'WE_CHAT_APPLET'">
|
||||||
|
<img src="../../../assets/manage/xcx.png" alt="">
|
||||||
|
<div>
|
||||||
|
小程序
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="item" style="color:#F4881F;border-color:#F4881F"
|
||||||
|
v-if="list.patientSource == 'MANAGE_END'">
|
||||||
|
<img src="../../../assets/manage/gld.png" alt="">
|
||||||
|
<div>
|
||||||
|
管理端
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="texts">
|
||||||
|
<div class="text">
|
||||||
|
医院: {{ list.hospitalAgencyName ? list.hospitalAgencyName : '' }}
|
||||||
|
</div>
|
||||||
|
<div class="text">
|
||||||
|
科室: {{ list.departmentName ? list.departmentName : '' }}
|
||||||
|
</div>
|
||||||
|
<div class="text" v-if="list.visitMethod == 'BE_IN_HOSPITAL'">
|
||||||
|
入院时间: {{ list.admissionTime }}
|
||||||
|
</div>
|
||||||
|
<div class="text" v-if="list.visitMethod == 'BE_IN_HOSPITAL'">
|
||||||
|
出院时间: {{ list.dischargeTime }}
|
||||||
|
</div>
|
||||||
|
<div class="text" v-if="list.visitMethod == 'OUTPATIENT_SERVICE'">
|
||||||
|
就诊时间: {{ list.dischargeTime }}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<el-descriptions title="诊断信息" style="margin:16px auto">
|
||||||
|
<el-descriptions-item label="主要诊断">{{ list.mainDiagnosis }}</el-descriptions-item>
|
||||||
|
</el-descriptions>
|
||||||
|
<el-descriptions title="手术信息" style="margin:16px auto;border-top: 1px solid #e6ebf5;"
|
||||||
|
v-if="list.visitMethod != 'OUTPATIENT_SERVICE'">
|
||||||
|
<el-descriptions-item label="手术名称">{{ list.surgicalName }}</el-descriptions-item>
|
||||||
|
</el-descriptions>
|
||||||
|
<el-collapse v-model="activeNames">
|
||||||
|
<el-collapse-item title="入院记录" name="-1">
|
||||||
|
<div>{{ list.inHospitalInfo }}</div>
|
||||||
|
</el-collapse-item>
|
||||||
|
<el-collapse-item title="手术记录" name="-2" v-if="list.visitMethod != 'OUTPATIENT_SERVICE'">
|
||||||
|
<div>{{ list.surgicalRecord }}</div>
|
||||||
|
</el-collapse-item>
|
||||||
|
<el-collapse-item title="出院记录" name="-3" v-if="list.visitMethod != 'OUTPATIENT_SERVICE'">
|
||||||
|
<div>{{ list.outHospitalInfo }}</div>
|
||||||
|
</el-collapse-item>
|
||||||
|
</el-collapse>
|
||||||
|
</div>
|
||||||
|
<div class="cardright">
|
||||||
|
<div class="text" style="font-size: 20px;"> 任务:</div>
|
||||||
|
<div v-for="item in nodelist" :key="item.manageRouteId" style="margin: 0 auto 30px;">
|
||||||
|
<div class="texts">
|
||||||
|
<div class="text">
|
||||||
|
任务名称: {{ item.routeName }}
|
||||||
|
</div>
|
||||||
|
<div class="text">
|
||||||
|
适用范围: {{ item.suitRange == 'IN_THE_HOSPITAL' ? '在院' : '' }}
|
||||||
|
{{ item.suitRange == 'DISCHARGE' ? '出院' : '' }}
|
||||||
|
{{ item.suitRange == 'OUTPATIENT_SERVICE' ? '门诊' : '' }}
|
||||||
|
{{ item.suitRange == 'OUTPATIENT_SERVICE_DISCHARGE' ? '门诊+出院' : "" }}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div v-for="uitem in item.nodeList" :key="uitem.id">
|
||||||
|
<div class="texts">
|
||||||
|
<div class="text" style="font-size:14px;font-weight: 400;">
|
||||||
|
任务内容:{{ uitem.taskType == 'PHONE_OUTBOUND' ? "电话外呼" : "" }}
|
||||||
|
{{ uitem.taskType == 'QUESTIONNAIRE_SCALE' ? "问卷量表" : "" }}
|
||||||
|
{{ uitem.taskType == 'PROPAGANDA_ARTICLE' ? "宣教文案" : "" }}
|
||||||
|
{{ uitem.taskType == 'TEXT_REMIND' ? "文字提醒" : "" }}
|
||||||
|
{{ uitem.taskType == 'ARTIFICIAL_FOLLOW_UP' ? "人工随访" : "" }}
|
||||||
|
</div>
|
||||||
|
<div class="text" style="font-size:14px;font-weight: 400;"
|
||||||
|
v-if="uitem.taskType == 'PHONE_OUTBOUND'">
|
||||||
|
话术模板:{{ uitem.phoneTemplateName }}
|
||||||
|
</div>
|
||||||
|
<div class="text" style="font-size:14px;font-weight: 400;"
|
||||||
|
v-if="uitem.taskType == 'QUESTIONNAIRE_SCALE'">
|
||||||
|
问卷模板:{{ uitem.questionnaireName }}
|
||||||
|
</div>
|
||||||
|
<div class="text" style="font-size:14px;font-weight: 400;"
|
||||||
|
v-if="uitem.taskType == 'QUESTIONNAIRE_SCALE'">
|
||||||
|
问卷有效期:{{ uitem.questionExpirationDate }}天
|
||||||
|
</div>
|
||||||
|
<div class="text" style="font-size:14px;font-weight: 400;"
|
||||||
|
v-if="uitem.taskType == 'PROPAGANDA_ARTICLE'">
|
||||||
|
宣教模板:{{ uitem.propagandaTitle }}
|
||||||
|
</div>
|
||||||
|
<div class="textarea" v-if="uitem.taskType == 'TEXT_REMIND'">
|
||||||
|
提醒内容:{{ uitem.textRemindContent }}
|
||||||
|
</div>
|
||||||
|
<div class="text" style="font-size:14px;font-weight: 400;"
|
||||||
|
v-if="uitem.taskType == 'ARTIFICIAL_FOLLOW_UP'">
|
||||||
|
人工随访模板:{{ uitem.questionnaireName }}
|
||||||
|
</div>
|
||||||
|
<div class="text" style="font-size:14px;font-weight: 400;"
|
||||||
|
v-if="uitem.taskType == 'ARTIFICIAL_FOLLOW_UP'">
|
||||||
|
随访详情:<el-button style="padding: 6px 10px;">预览</el-button>
|
||||||
|
</div>
|
||||||
|
<div class="text" style="font-size:14px;font-weight: 400;"
|
||||||
|
v-if="uitem.taskType == 'QUESTIONNAIRE_SCALE'">
|
||||||
|
问卷模板详情:<el-button @click="lookquestion(uitem)" style="padding: 6px 10px;">预览</el-button>
|
||||||
|
</div>
|
||||||
|
<div class="text" style="font-size:14px;font-weight: 400;"
|
||||||
|
v-if="uitem.taskType == 'PROPAGANDA_ARTICLE'">
|
||||||
|
宣教模板详情:<el-button @click="lookpropaganda(uitem)"
|
||||||
|
style="padding: 6px 10px;">预览</el-button>
|
||||||
|
</div>
|
||||||
|
<div class="text" style="font-size:14px;font-weight: 400;"
|
||||||
|
v-if="uitem.taskType == 'PHONE_OUTBOUND'">
|
||||||
|
话术模板详情:<el-button @click="lookphone(uitem)" style="padding: 6px 10px;">预览</el-button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- 话术预览弹框 -->
|
||||||
|
<el-dialog title="话术预览" :visible.sync="phoneopen" width="30%" :before-close="openfalse">
|
||||||
|
<img style="width:200px" :src="baseUrl + lookitem.scriptFilePath" />
|
||||||
|
<span slot="footer" class="dialog-footer">
|
||||||
|
<el-button @click="phoneopen = false">确 定</el-button>
|
||||||
|
</span>
|
||||||
|
</el-dialog>
|
||||||
|
<!-- 宣教预览弹框 -->
|
||||||
|
<el-dialog title="宣教预览" :visible.sync="propagandaopen" width="30%" :before-close="openfalse">
|
||||||
|
<div class="titletop">文章模板:{{ lookitem.propagandaTitle }}</div>
|
||||||
|
<div class="bodytop">
|
||||||
|
<div class="titledata">{{ lookitem.propagandaTitle }}</div>
|
||||||
|
<div>
|
||||||
|
<img :src="baseUrl + lookitem.propagandaCoverPath" alt="" />
|
||||||
|
<div class="know">知识卡片</div>
|
||||||
|
<div class="knowlist">
|
||||||
|
{{ lookitem.propagandaContent }}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</el-dialog>
|
||||||
|
<!-- 问卷预览弹框 -->
|
||||||
|
<questionopen ref="question" :lookitem="lookitem"></questionopen>
|
||||||
|
<!-- <el-dialog title="问卷预览" :visible.sync="questionopen" width="30%" :before-close="openfalse">
|
||||||
|
<div class="titletop">文章模板:{{ lookitem.propagandaTitle }}</div>
|
||||||
|
<div class="bodytop">
|
||||||
|
<div class="titledata">{{ lookitem.propagandaTitle }}</div>
|
||||||
|
<div>
|
||||||
|
<img :src="baseUrl + lookitem.propagandaCoverPath" alt="" />
|
||||||
|
<div class="know">知识卡片</div>
|
||||||
|
<div class="knowlist">
|
||||||
|
{{ lookitem.propagandaContent }}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</el-dialog> -->
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import {
|
||||||
|
getRouteNodeList,
|
||||||
|
getByPatientId,
|
||||||
|
audit
|
||||||
|
} from '@/api/manage/Auditing.js'
|
||||||
|
import { getAge } from "@/utils/age";
|
||||||
|
import questionopen from '../components/questionopen.vue';
|
||||||
|
export default {
|
||||||
|
components: {
|
||||||
|
questionopen,
|
||||||
|
},
|
||||||
|
name: "LookAuditing",
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
baseUrl: process.env.VUE_APP_BASE_API,
|
||||||
|
activeNames: ['-1', '-2', '-3'],
|
||||||
|
list: {},
|
||||||
|
nodelist: [],
|
||||||
|
lookitem: {},
|
||||||
|
phoneopen: false,
|
||||||
|
propagandaopen: false,
|
||||||
|
};
|
||||||
|
},
|
||||||
|
created() {
|
||||||
|
this.info();
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
//查看宣教模板
|
||||||
|
lookpropaganda(item) {
|
||||||
|
this.lookitem = item.detailInfo
|
||||||
|
this.propagandaopen = true
|
||||||
|
},
|
||||||
|
//查看话术模板
|
||||||
|
lookphone(item) {
|
||||||
|
this.lookitem = item.detailInfo
|
||||||
|
this.phoneopen = true
|
||||||
|
},
|
||||||
|
//查看问卷模板
|
||||||
|
lookquestion(item) {
|
||||||
|
this.lookitem = item.detailInfo
|
||||||
|
this.$refs.question.questionopentrue()
|
||||||
|
},
|
||||||
|
//关闭预览
|
||||||
|
openfalse() {
|
||||||
|
this.phoneopen = false
|
||||||
|
this.propagandaopen = false
|
||||||
|
this.lookitem = {}
|
||||||
|
},
|
||||||
|
//审核
|
||||||
|
auditing() {
|
||||||
|
this.$prompt('请输入审核备注信息?', '提示', {
|
||||||
|
confirmButtonText: '确定',
|
||||||
|
cancelButtonText: '取消',
|
||||||
|
}).then(({ value }) => {
|
||||||
|
let obj = {
|
||||||
|
routeCheckPerson: JSON.parse(localStorage.getItem('user')).nickName,
|
||||||
|
routeCheckRemark: value,
|
||||||
|
routeCheckStatus: 'AGREE',
|
||||||
|
manageRouteNodeIds: this.nodelist.map(e => e.manageRouteId)
|
||||||
|
}
|
||||||
|
audit(obj).then(res => {
|
||||||
|
this.$notify({
|
||||||
|
type: 'success',
|
||||||
|
title: '提示',
|
||||||
|
message: '审核通过,即将返回上一页',
|
||||||
|
duration: 3000
|
||||||
|
});
|
||||||
|
setTimeout(() => {
|
||||||
|
this.$store.dispatch('tagsView/delView', this.$route).then(({ visitedViews }) => {
|
||||||
|
this.$router.push({
|
||||||
|
path: "/task/manualReview",
|
||||||
|
});
|
||||||
|
})
|
||||||
|
}, 3000);
|
||||||
|
})
|
||||||
|
})
|
||||||
|
},
|
||||||
|
info() {
|
||||||
|
getByPatientId(this.$route.query.patientId).then(res => {
|
||||||
|
res.data.birthDate ? res.data.age = getAge(res.data.birthDate) : ''
|
||||||
|
this.list = res.data
|
||||||
|
})
|
||||||
|
getRouteNodeList({ patientId: this.$route.query.patientId, taskCreateType: 'MANUAL_CREATE', routeCheckStatus: this.$route.query.routeCheckStatus }).then(res => {
|
||||||
|
this.nodelist = res.data
|
||||||
|
})
|
||||||
|
},
|
||||||
|
cancel() {
|
||||||
|
this.$store.dispatch('tagsView/delView', this.$route).then(({ visitedViews }) => {
|
||||||
|
this.$router.push({
|
||||||
|
path: "/task/manualReview",
|
||||||
|
});
|
||||||
|
})
|
||||||
|
},
|
||||||
|
}
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
::v-deep .el-collapse-item__header {
|
||||||
|
font-size: 16px;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
.texts {
|
||||||
|
margin: 16px 0 20px;
|
||||||
|
flex-wrap: wrap;
|
||||||
|
width: 100%;
|
||||||
|
display: flex;
|
||||||
|
font-size: 14px;
|
||||||
|
|
||||||
|
.text {
|
||||||
|
margin-bottom: 10px;
|
||||||
|
width: 50%;
|
||||||
|
overflow: hidden;
|
||||||
|
white-space: nowrap;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
-o-text-overflow: ellipsis;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.card {
|
||||||
|
width: 100%;
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-evenly;
|
||||||
|
padding: 20px 0;
|
||||||
|
height: calc(100vh - 119px);
|
||||||
|
|
||||||
|
.cardleft {
|
||||||
|
width: 35%;
|
||||||
|
background-color: #fff;
|
||||||
|
overflow: scroll;
|
||||||
|
padding: 20px;
|
||||||
|
|
||||||
|
.title {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: space-between;
|
||||||
|
|
||||||
|
.source {
|
||||||
|
display: flex;
|
||||||
|
|
||||||
|
.situation {
|
||||||
|
background-color: #F1FAF7;
|
||||||
|
padding: 3px 6px;
|
||||||
|
color: #83CAC0 !important;
|
||||||
|
border: 1px solid #83CAC0 !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.item {
|
||||||
|
font-size: 14px;
|
||||||
|
margin-left: 5px;
|
||||||
|
border: 1px solid #fff;
|
||||||
|
padding: 3px 6px;
|
||||||
|
border-radius: 5px;
|
||||||
|
justify-content: center;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
|
||||||
|
img {
|
||||||
|
margin-right: 2px;
|
||||||
|
width: 16px;
|
||||||
|
height: 16px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.name {
|
||||||
|
padding: 0 6px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.genderandage {
|
||||||
|
padding: 0 6px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.headsculpture {
|
||||||
|
width: 35px;
|
||||||
|
height: 35px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.cardright {
|
||||||
|
overflow: scroll;
|
||||||
|
background-color: #fff;
|
||||||
|
width: 62%;
|
||||||
|
padding: 20px;
|
||||||
|
font-size: 14px;
|
||||||
|
|
||||||
|
.textarea {
|
||||||
|
font-size: 14px;
|
||||||
|
font-weight: 400;
|
||||||
|
margin-bottom: 10px;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.text {
|
||||||
|
font-size: 16px;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.titletop {
|
||||||
|
font-size: 16px;
|
||||||
|
font-weight: 700;
|
||||||
|
}
|
||||||
|
|
||||||
|
.bodytop {
|
||||||
|
position: relative;
|
||||||
|
top: 20px;
|
||||||
|
height: 500px;
|
||||||
|
overflow: auto;
|
||||||
|
border: 1px solid #e2e2e2;
|
||||||
|
|
||||||
|
.titledata {
|
||||||
|
margin: 30px 0px 15px 30px;
|
||||||
|
top: 14px;
|
||||||
|
font-size: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.audiotop {
|
||||||
|
margin: 10px 0px 10px 30px;
|
||||||
|
}
|
||||||
|
|
||||||
|
img {
|
||||||
|
// width: 100%;
|
||||||
|
// width: 362px;
|
||||||
|
// height: 127px;
|
||||||
|
margin: 0px 0px 0px 30px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.know {
|
||||||
|
margin: 11px 0px 10px 30px;
|
||||||
|
font-size: 16px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.knowlist {
|
||||||
|
margin: 10px 0px 10px 30px;
|
||||||
|
font-size: 16px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
||||||
@ -9,7 +9,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="rightheader" v-if="categorylist.length > 0">
|
<div class="rightheader" v-if="categorylist.length > 0">
|
||||||
<div class="richtext">
|
<div class="richtext" v-html="categoryItem.propagandaContent">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<el-empty description="暂无" style="width: 100%;" v-else></el-empty>
|
<el-empty description="暂无" style="width: 100%;" v-else></el-empty>
|
||||||
|
|||||||
377
src/views/manage/components/questionopen.vue
Normal file
377
src/views/manage/components/questionopen.vue
Normal file
@ -0,0 +1,377 @@
|
|||||||
|
<template>
|
||||||
|
<div class="app-container">
|
||||||
|
<!-- 问卷模板 -->
|
||||||
|
<el-dialog title="问卷预览" :visible.sync="questionopen" width="30%">
|
||||||
|
<div class="words" v-for="(item, index) in questiondata.questionSubjectList" :key="index">
|
||||||
|
{{ index + 1 }}.{{ item.questionName }}
|
||||||
|
<span v-if="item.questionType == 'MULTIPLE_CHOICE'">(单选题)</span>
|
||||||
|
<span v-if="item.questionType == 'MULTIPLE_CHOICE_QUESTIONS'">(多选题)</span>
|
||||||
|
<span v-if="item.questionType == 'SCORING_QUESTIONS'">(打分题)</span>
|
||||||
|
<span v-if="item.questionType == 'COMBINATION_RADIO_SUBJECT'">(组合单选题)</span>
|
||||||
|
<span v-if="item.questionType == 'COMBINATION_MULTIPLE_SUBJECT'">(组合多选题)</span>
|
||||||
|
<span v-if="item.questionType == 'COMBINATION_BLANKS_SUBJECT'">(组合填空题)</span>
|
||||||
|
<span v-if="item.questionType == 'FILL_IN_THE_BLANKS'">(填空题)</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>
|
||||||
|
<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="questiondata[index]" class="custom-radio-group" disabled
|
||||||
|
@change="radioGroupChange($event, item)">
|
||||||
|
<el-radio class="custom" v-for="(aitem, aindex) in item.questionSubjectOptionList" :key="aindex"
|
||||||
|
:label="aitem.id" @change="radioChange($event, aitem, index)">{{ aitem.optionName }}</el-radio>
|
||||||
|
</el-radio-group>
|
||||||
|
<!-- 多选、组合多选 -->
|
||||||
|
<el-checkbox-group disabled v-model="checkeddata" @change="radioGroupChange($event, item, 'checkbox')"
|
||||||
|
v-if="item.questionType == 'MULTIPLE_CHOICE_QUESTIONS' ||
|
||||||
|
item.questionType == 'COMBINATION_MULTIPLE_SUBJECT'
|
||||||
|
">
|
||||||
|
<el-checkbox v-for="(aitem, aindex) in item.questionSubjectOptionList" :key="aindex"
|
||||||
|
:label="aitem.id" @change="radioChangecheck($event, aitem, index, aindex)">{{ aitem.optionName
|
||||||
|
}}</el-checkbox>
|
||||||
|
</el-checkbox-group>
|
||||||
|
<!-- 填空题、组合填空 -->
|
||||||
|
<div v-if="item.questionType == 'FILL_IN_THE_BLANKS' ||
|
||||||
|
item.questionType == 'COMBINATION_BLANKS_SUBJECT'
|
||||||
|
" class="tk">
|
||||||
|
<el-input v-model="item.fillBlanksAnswer" disabled placeholder="请输入答案" type="textarea" />
|
||||||
|
<!-- <el-input></el-input> -->
|
||||||
|
</div>
|
||||||
|
<!-- 日期填空题、 -->
|
||||||
|
<div v-if="item.questionType == 'DATE_BLANKS_SUBJECT'" style="margin: 20px 0 10px 30px">
|
||||||
|
<el-date-picker disabled @change="timepicker($event, index)" clearable
|
||||||
|
v-model="item.fillBlanksAnswer" type="date" value-format="yyyy-MM-dd" placeholder="选择日期">
|
||||||
|
</el-date-picker>
|
||||||
|
</div>
|
||||||
|
<!-- 时间填空题 -->
|
||||||
|
<div style="margin: 20px 0 10px 30px" v-if="item.questionType == 'TIME_BLANKS_SUBJECT'">
|
||||||
|
<el-time-select disabled @change="timepickerselect($event, index)" clearable
|
||||||
|
v-model="item.fillBlanksAnswer" :picker-options="{
|
||||||
|
start: '08:30',
|
||||||
|
step: '00:30',
|
||||||
|
end: '23:30',
|
||||||
|
}" placeholder="选择时间">
|
||||||
|
</el-time-select>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</el-dialog>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
export default {
|
||||||
|
name: "questionopen",
|
||||||
|
props: ['lookitem'],
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
checkeddata: [],
|
||||||
|
questiondata: {},
|
||||||
|
questionopen: false,
|
||||||
|
};
|
||||||
|
},
|
||||||
|
watch: {
|
||||||
|
},
|
||||||
|
created() {
|
||||||
|
this.questiondata = this.lookitem
|
||||||
|
},
|
||||||
|
mounted() {
|
||||||
|
},
|
||||||
|
watch: {
|
||||||
|
lookitem(newValue, oldValue) {
|
||||||
|
if (newValue) {
|
||||||
|
this.questiondata = newValue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
questionopentrue() {
|
||||||
|
this.questionopen = true
|
||||||
|
},
|
||||||
|
// 日期填空题
|
||||||
|
timepicker(e, index) {
|
||||||
|
this.questiondata.questionSubjectList[index].fillBlanksAnswer = e
|
||||||
|
|
||||||
|
},
|
||||||
|
// 复选框
|
||||||
|
radioChangecheck(e, item, index, aindex) {
|
||||||
|
console.log(e, item, index, '选中某个复选框时')
|
||||||
|
if (e == true) {
|
||||||
|
this.questiondata.questionSubjectList[index].questionSubjectOptionList[aindex].optionChooseSign = '0'
|
||||||
|
} else {
|
||||||
|
this.questiondata.questionSubjectList[index].questionSubjectOptionList[aindex].optionChooseSign = '1'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
// 时间填空题
|
||||||
|
timepickerselect(e, index) {
|
||||||
|
this.questiondata.questionSubjectList[index].fillBlanksAnswer = e
|
||||||
|
},
|
||||||
|
radioGroupChange(e, item) {
|
||||||
|
},
|
||||||
|
// 选中某个单选框时,由radio时触发
|
||||||
|
radioChange(e, item, index) {
|
||||||
|
this.questiondata.questionSubjectList[index].questionSubjectOptionList.forEach(el => {
|
||||||
|
if (el.id == item.id) {
|
||||||
|
el.optionChooseSign = '0'
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
el.optionChooseSign = '1'
|
||||||
|
}
|
||||||
|
})
|
||||||
|
console.log(this.questiondata, 'this.questiondata')
|
||||||
|
this.questiondata
|
||||||
|
},
|
||||||
|
// 复选框
|
||||||
|
radioChangecheck(e, item, index, aindex) {
|
||||||
|
if (e == true) {
|
||||||
|
this.questiondata.questionSubjectList[index].questionSubjectOptionList[aindex].optionChooseSign = '0'
|
||||||
|
} else {
|
||||||
|
this.questiondata.questionSubjectList[index].questionSubjectOptionList[aindex].optionChooseSign = '1'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
}
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
<style scoped lang="scss">
|
||||||
|
::v-deep .el-input.is-disabled .el-input__inner {
|
||||||
|
background: #fff !important;
|
||||||
|
color: #606266;
|
||||||
|
}
|
||||||
|
|
||||||
|
::v-deep .el-textarea.is-disabled .el-textarea__inner {
|
||||||
|
color: #606266;
|
||||||
|
background: #fff;
|
||||||
|
}
|
||||||
|
|
||||||
|
.tk {
|
||||||
|
::v-deep .el-textarea__inner {
|
||||||
|
margin: 20px 0 10px 10px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
::v-deep .el-radio {
|
||||||
|
padding: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
::v-deep .el-checkbox-group {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
padding: 10px 0px 10px 24px;
|
||||||
|
}
|
||||||
|
|
||||||
|
::v-deep .el-checkbox {
|
||||||
|
padding: 10px 0 10px 0px;
|
||||||
|
// padding: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.custom-radio-group {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
padding: 10px 0 10px 10px;
|
||||||
|
|
||||||
|
.custom {
|
||||||
|
padding: 10px 0 10px 10px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.bodytop {
|
||||||
|
position: relative;
|
||||||
|
top: 20px;
|
||||||
|
// height: 500px;
|
||||||
|
width: 400px;
|
||||||
|
margin: 0 auto;
|
||||||
|
// background: red;f
|
||||||
|
overflow: auto;
|
||||||
|
border: 1px solid #e2e2e2;
|
||||||
|
|
||||||
|
.titledata {
|
||||||
|
margin: 30px 0px 15px 30px;
|
||||||
|
top: 14px;
|
||||||
|
font-size: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.audiotop {
|
||||||
|
margin: 10px 0px 10px 30px;
|
||||||
|
}
|
||||||
|
|
||||||
|
img {
|
||||||
|
// width: 362px;
|
||||||
|
// height: 127px;
|
||||||
|
margin: 0px 0px 0px 30px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.know {
|
||||||
|
margin: 11px 0px 10px 30px;
|
||||||
|
font-size: 20px;
|
||||||
|
font-weight: 550;
|
||||||
|
}
|
||||||
|
|
||||||
|
.knowlist {
|
||||||
|
margin: 10px 0px 10px 30px;
|
||||||
|
font-size: 16px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.right {
|
||||||
|
width: 100%;
|
||||||
|
height: 500px;
|
||||||
|
// background: yellow;
|
||||||
|
}
|
||||||
|
|
||||||
|
.header {
|
||||||
|
background-color: #f1f3f5;
|
||||||
|
padding-top: 10px;
|
||||||
|
|
||||||
|
::v-deep .el-tabs__header {
|
||||||
|
margin: 0 !important;
|
||||||
|
width: 100%;
|
||||||
|
// overflow: auto;
|
||||||
|
// height: 500px;
|
||||||
|
// background: red;
|
||||||
|
}
|
||||||
|
|
||||||
|
.bottomheader {
|
||||||
|
overflow: auto;
|
||||||
|
width: 99%;
|
||||||
|
background-color: #fff;
|
||||||
|
margin: 10px auto;
|
||||||
|
padding: 10px 20px;
|
||||||
|
|
||||||
|
.sport {
|
||||||
|
padding: 10px 50px 10px 10px;
|
||||||
|
font-size: 20px;
|
||||||
|
font-weight: 600;
|
||||||
|
}
|
||||||
|
|
||||||
|
.words {
|
||||||
|
font-size: 15px;
|
||||||
|
padding: 10px 50px 10px 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.sports {
|
||||||
|
position: absolute;
|
||||||
|
left: 50%;
|
||||||
|
transform: translate(-50%);
|
||||||
|
font-size: 18px;
|
||||||
|
font-weight: 600;
|
||||||
|
}
|
||||||
|
|
||||||
|
.word {
|
||||||
|
font-size: 14px;
|
||||||
|
font-weight: 550;
|
||||||
|
padding: 50px 50px 10px 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.videoleft {
|
||||||
|
width: 40%;
|
||||||
|
height: 200px;
|
||||||
|
background: red;
|
||||||
|
}
|
||||||
|
|
||||||
|
.time {
|
||||||
|
font-size: 20px;
|
||||||
|
font-weight: 550;
|
||||||
|
padding: 10px 50px 10px 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.number {
|
||||||
|
width: 25px;
|
||||||
|
height: 25px;
|
||||||
|
text-align: center;
|
||||||
|
display: inline-block;
|
||||||
|
color: white;
|
||||||
|
background: blue;
|
||||||
|
border-radius: 50%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.nexttime {
|
||||||
|
font-size: 15px;
|
||||||
|
padding: 10px 50px 10px 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.images {
|
||||||
|
width: 53%;
|
||||||
|
height: 241px;
|
||||||
|
margin: 0 auto;
|
||||||
|
background: red;
|
||||||
|
}
|
||||||
|
|
||||||
|
.attention {
|
||||||
|
font-size: 14px;
|
||||||
|
font-weight: 550;
|
||||||
|
padding: 10px 50px 10px 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
// .videobottom
|
||||||
|
// {
|
||||||
|
// font-size: 14px;
|
||||||
|
// font-weight: 550;
|
||||||
|
// padding: 10px 50px 10px 10px;
|
||||||
|
// }
|
||||||
|
}
|
||||||
|
|
||||||
|
.topheader {
|
||||||
|
width: 99%;
|
||||||
|
background-color: #fff;
|
||||||
|
margin: 0 auto;
|
||||||
|
|
||||||
|
.information {
|
||||||
|
display: flex;
|
||||||
|
flex-wrap: wrap;
|
||||||
|
padding: 10px 20px;
|
||||||
|
height: 110px;
|
||||||
|
|
||||||
|
.top,
|
||||||
|
.bottom {
|
||||||
|
color: #666666;
|
||||||
|
width: 100%;
|
||||||
|
display: flex;
|
||||||
|
|
||||||
|
div {
|
||||||
|
width: 25%;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.user {
|
||||||
|
width: 100%;
|
||||||
|
padding: 0 20px;
|
||||||
|
display: flex;
|
||||||
|
height: 80px;
|
||||||
|
align-items: center;
|
||||||
|
line-height: 80px;
|
||||||
|
|
||||||
|
.source {
|
||||||
|
display: flex;
|
||||||
|
position: relative;
|
||||||
|
right: 59px;
|
||||||
|
position: absolute;
|
||||||
|
|
||||||
|
.item {
|
||||||
|
margin-left: 20px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.name {
|
||||||
|
font-size: 20px;
|
||||||
|
padding-left: 12px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.gender {
|
||||||
|
padding-left: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.age {
|
||||||
|
padding-left: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.headsculpture {
|
||||||
|
border-radius: 50%;
|
||||||
|
width: 40px;
|
||||||
|
height: 40px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
||||||
@ -1,7 +1,7 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="app-container">
|
<div class="app-container">
|
||||||
<el-tabs v-model="queryParams.routeCheckStatustwo" @tab-click="handleClick">
|
<el-tabs v-model="queryParams.routeCheckStatus" @tab-click="handleClick">
|
||||||
<el-tab-pane label="未审核" name="routeCheckStatustwo"></el-tab-pane>
|
<el-tab-pane label="未审核" name="UNAUDITED"></el-tab-pane>
|
||||||
<el-tab-pane label="已审核" name="AGREE"></el-tab-pane>
|
<el-tab-pane label="已审核" name="AGREE"></el-tab-pane>
|
||||||
<el-tab-pane label="已忽略" name="DISAGREE"></el-tab-pane>
|
<el-tab-pane label="已忽略" name="DISAGREE"></el-tab-pane>
|
||||||
</el-tabs>
|
</el-tabs>
|
||||||
@ -103,9 +103,9 @@
|
|||||||
<el-table-column label="操作" align="center" class-name="small-padding fixed-width" fixed="right">
|
<el-table-column label="操作" align="center" class-name="small-padding fixed-width" fixed="right">
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
<el-button size="mini" type="text" @click="handleAuthRole(scope.row)"
|
<el-button size="mini" type="text" @click="handleAuthRole(scope.row)"
|
||||||
v-if="queryParams.routeCheckStatustwo == 'routeCheckStatustwo'">审核</el-button>
|
v-if="queryParams.routeCheckStatus == 'UNAUDITED'">审核</el-button>
|
||||||
<el-button size="mini" type="text" @click="handleLook(scope.row)"
|
<el-button size="mini" type="text" @click="handleLook(scope.row)"
|
||||||
v-if="queryParams.routeCheckStatustwo != 'routeCheckStatustwo'">查看</el-button>
|
v-if="queryParams.routeCheckStatus != 'UNAUDITED'">查看</el-button>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
</el-table>
|
</el-table>
|
||||||
@ -158,8 +158,7 @@ export default {
|
|||||||
dischargeTimeEnd: null,
|
dischargeTimeEnd: null,
|
||||||
dischargeMethod: null,
|
dischargeMethod: null,
|
||||||
patientSource: null,
|
patientSource: null,
|
||||||
routeCheckStatus: '',
|
routeCheckStatus: 'UNAUDITED',
|
||||||
routeCheckStatustwo: 'routeCheckStatustwo',
|
|
||||||
},
|
},
|
||||||
dischargeTime: [],
|
dischargeTime: [],
|
||||||
admissionTime: [],
|
admissionTime: [],
|
||||||
@ -186,13 +185,6 @@ export default {
|
|||||||
this.queryParams.admissionTimeStart = null
|
this.queryParams.admissionTimeStart = null
|
||||||
this.queryParams.admissionTimeEnd = null
|
this.queryParams.admissionTimeEnd = null
|
||||||
this.queryParams.pageNum = 1
|
this.queryParams.pageNum = 1
|
||||||
if (tab.index == '0') {
|
|
||||||
this.queryParams.routeCheckStatus = ''
|
|
||||||
} else if (tab.index == '1') {
|
|
||||||
this.queryParams.routeCheckStatus = 'AGREE'
|
|
||||||
} else if (tab.index == '2') {
|
|
||||||
this.queryParams.routeCheckStatus = 'DISAGREE'
|
|
||||||
}
|
|
||||||
this.getList();
|
this.getList();
|
||||||
},
|
},
|
||||||
//主治医生
|
//主治医生
|
||||||
@ -206,7 +198,13 @@ export default {
|
|||||||
},
|
},
|
||||||
//查看操作
|
//查看操作
|
||||||
handleLook(row) {
|
handleLook(row) {
|
||||||
|
this.$router.push({
|
||||||
|
path: "/task/LookAuditing",
|
||||||
|
query: {
|
||||||
|
patientId: row.patientId,
|
||||||
|
routeCheckStatus: this.queryParams.routeCheckStatus,
|
||||||
|
},
|
||||||
|
});
|
||||||
},
|
},
|
||||||
/** 审核操作 */
|
/** 审核操作 */
|
||||||
handleAuthRole(row) {
|
handleAuthRole(row) {
|
||||||
|
|||||||
473
src/views/system/SatisfactionQuestionnaireDetails/index.vue
Normal file
473
src/views/system/SatisfactionQuestionnaireDetails/index.vue
Normal file
@ -0,0 +1,473 @@
|
|||||||
|
<template>
|
||||||
|
<div class="header">
|
||||||
|
<div class="topheader">
|
||||||
|
<div class="user">
|
||||||
|
<img class="headsculpture" src="../../../assets/manage/touxiang.png" alt="" v-if="list.sex == 'MALE'" />
|
||||||
|
<img class="headsculpture" src="../../../assets/manage/nvtouxiang.png" alt="" v-if="list.sex == 'FEMALE'" />
|
||||||
|
<div class="name">
|
||||||
|
{{ list.patientName }}
|
||||||
|
</div>
|
||||||
|
<div class="gender">
|
||||||
|
{{ list.sex == "MALE" ? "男" : list.sex == "FEMALE" ? "女" : "" }}
|
||||||
|
</div>
|
||||||
|
<div class="age">
|
||||||
|
{{ list.age }}
|
||||||
|
</div>
|
||||||
|
<div class="source">
|
||||||
|
<div class="item" style="color: #00e06e; border-color: #00e06e"
|
||||||
|
v-if="list.patientSource == 'WE_CHAT_OFFICIAL_ACCOUNT'">
|
||||||
|
<img src="../../../assets/manage/gzh.png" alt="" style="width: 24px" />
|
||||||
|
<div>公众号</div>
|
||||||
|
</div>
|
||||||
|
<div class="item" style="color: #339de5; border-color: #339de5" v-if="list.patientSource == 'WE_CHAT_APPLET'">
|
||||||
|
<img src="../../../assets/manage/xcx.png" alt="" />
|
||||||
|
<div>小程序</div>
|
||||||
|
</div>
|
||||||
|
<div class="item" style="color: #f4881f; border-color: #f4881f" v-if="list.patientSource == 'MANAGE_END'">
|
||||||
|
<img src="../../../assets/manage/gld.png" alt="" />
|
||||||
|
<div>管理端</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="information">
|
||||||
|
<div class="top">
|
||||||
|
<div>身份证号:{{ list.cardNo }}</div>
|
||||||
|
<div>患者电话:{{ list.patientPhone }}</div>
|
||||||
|
<div style="width: 50%">出生日期:{{ list.birthDate }}</div>
|
||||||
|
</div>
|
||||||
|
<div class="bottom">
|
||||||
|
<div>问卷总分:{{ questiondata.questionnaireTotalScore }}</div>
|
||||||
|
<div style="width: 50%">问卷得分:{{ questiondata.totalScore }}</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="bottomheader">
|
||||||
|
<!-- 问卷模板 -->
|
||||||
|
<div class="right">
|
||||||
|
<div class="words" v-for="(item, index) in questiondata.subjectResultList" :key="index">
|
||||||
|
{{ index + 1 }}.{{ item.questionName }}
|
||||||
|
<span v-if="item.questionType == 'MULTIPLE_CHOICE'">(单选题)</span>
|
||||||
|
<span v-if="item.questionType == 'MULTIPLE_CHOICE_QUESTIONS'">(多选题)</span>
|
||||||
|
<span v-if="item.questionType == 'SCORING_QUESTIONS'">(打分题)</span>
|
||||||
|
<span v-if="item.questionType == 'COMBINATION_RADIO_SUBJECT'">(组合单选题)</span>
|
||||||
|
<span v-if="item.questionType == 'COMBINATION_MULTIPLE_SUBJECT'">(组合多选题)</span>
|
||||||
|
<span v-if="item.questionType == 'COMBINATION_BLANKS_SUBJECT'">(组合填空题)</span>
|
||||||
|
<span v-if="item.questionType == 'FILL_IN_THE_BLANKS'">(填空题)</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>
|
||||||
|
<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 }}</el-radio>
|
||||||
|
</el-radio-group>
|
||||||
|
<!-- 多选、组合多选 -->
|
||||||
|
<el-checkbox-group v-model="checkeddata" @change="radioGroupChange($event, item, 'checkbox')" v-if="item.questionType == 'MULTIPLE_CHOICE_QUESTIONS' ||
|
||||||
|
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 }}</el-checkbox>
|
||||||
|
</el-checkbox-group>
|
||||||
|
<!-- 填空题、组合填空 -->
|
||||||
|
<div v-if="item.questionType == 'FILL_IN_THE_BLANKS' ||
|
||||||
|
item.questionType == 'COMBINATION_BLANKS_SUBJECT'
|
||||||
|
" class="tk">
|
||||||
|
<el-input disabled v-model="item.fillBlanksAnswer" placeholder="请输入答案" type="textarea" />
|
||||||
|
<!-- <el-input></el-input> -->
|
||||||
|
</div>
|
||||||
|
<!-- 日期填空题、 -->
|
||||||
|
<div v-if="item.questionType == 'DATE_BLANKS_SUBJECT'" style="margin: 20px 0 10px 30px">
|
||||||
|
<el-date-picker disabled @change="timepicker($event, index)" clearable v-model="item.fillBlanksAnswer"
|
||||||
|
type="date" value-format="yyyy-MM-dd" placeholder="选择日期">
|
||||||
|
</el-date-picker>
|
||||||
|
</div>
|
||||||
|
<!-- 时间填空题 -->
|
||||||
|
<div style="margin: 20px 0 10px 30px" v-if="item.questionType == 'TIME_BLANKS_SUBJECT'">
|
||||||
|
<el-time-select disabled @change="timepickerselect($event, index)" clearable v-model="item.fillBlanksAnswer"
|
||||||
|
:picker-options="{
|
||||||
|
start: '08:30',
|
||||||
|
step: '00:30',
|
||||||
|
end: '23:30',
|
||||||
|
}" placeholder="选择时间">
|
||||||
|
</el-time-select>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import {
|
||||||
|
selectQuestionnaireResult
|
||||||
|
} from "@/api/system/SatisfactionQuestionnaireDetails";
|
||||||
|
export default {
|
||||||
|
name: "SatisfactionQuestionnaireDetails",
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
checkeddata: [],
|
||||||
|
formlists: {},
|
||||||
|
baseUrl: process.env.VUE_APP_BASE_API,
|
||||||
|
radio: "1",
|
||||||
|
activeName: "first",
|
||||||
|
id: "",
|
||||||
|
list: [],
|
||||||
|
questiondata: {
|
||||||
|
totalScore: 0, //总分
|
||||||
|
routeHandlePerson: null,
|
||||||
|
routeHandleId: null,
|
||||||
|
},
|
||||||
|
formview: [],
|
||||||
|
// 电话外呼
|
||||||
|
formlist: {},
|
||||||
|
materialsFilePath: "",
|
||||||
|
materialsType: "",
|
||||||
|
// rules: {
|
||||||
|
// routeHandleRemark: [
|
||||||
|
// { required: true, message: "请输入任务处理信息", trigger: "change" },
|
||||||
|
// ],
|
||||||
|
// },
|
||||||
|
};
|
||||||
|
},
|
||||||
|
created() {
|
||||||
|
this.list = this.$route.query
|
||||||
|
this.selectlist();
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
// 问卷和随访
|
||||||
|
selectlist() {
|
||||||
|
selectQuestionnaireResult(this.$route.query.patientQuestionSubmitResultId).then((res) => {
|
||||||
|
this.questiondata = res.data;
|
||||||
|
if (this.$route.query.routeHandleRemark) {
|
||||||
|
this.questiondata.routeHandleRemark =
|
||||||
|
this.$route.query.routeHandleRemark;
|
||||||
|
}
|
||||||
|
this.questiondata.subjectResultList.forEach((e) => {
|
||||||
|
e.optionResults.forEach((el) => {
|
||||||
|
// console.log(el, "el");
|
||||||
|
if (
|
||||||
|
(el.optionChooseSign == "0" &&
|
||||||
|
e.questionType == "MULTIPLE_CHOICE") ||
|
||||||
|
e.questionType == "COMBINATION_RADIO_SUBJECT"
|
||||||
|
) {
|
||||||
|
e.checked = el.id;
|
||||||
|
} else if (
|
||||||
|
el.optionChooseSign == "0" &&
|
||||||
|
e.questionType == "MULTIPLE_CHOICE_QUESTIONS"
|
||||||
|
) {
|
||||||
|
this.checkeddata.push(el.id);
|
||||||
|
} else if (
|
||||||
|
el.optionChooseSign == "0" &&
|
||||||
|
e.questionType == "SCORING_QUESTIONS"
|
||||||
|
) {
|
||||||
|
e.checked = el.id;
|
||||||
|
} else if (
|
||||||
|
e.questionType == "COMBINATION_MULTIPLE_SUBJECT" &&
|
||||||
|
el.optionChooseSign == "0"
|
||||||
|
) {
|
||||||
|
this.checkeddata.push(el.id);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
},
|
||||||
|
// 日期填空题
|
||||||
|
timepicker(e, index) {
|
||||||
|
this.questiondata.questionSubjectList[index].optionAnswer = e;
|
||||||
|
},
|
||||||
|
// 时间填空题
|
||||||
|
timepickerselect(e, index) {
|
||||||
|
console.log(e);
|
||||||
|
this.questiondata.questionSubjectList[index].optionAnswer = e;
|
||||||
|
},
|
||||||
|
radioGroupChange(e, item) { },
|
||||||
|
// 选中某个单选框时,由radio时触发
|
||||||
|
radioChange(e, item, index) {
|
||||||
|
console.log(e, item, index, "选中某个单选框时");
|
||||||
|
this.questiondata.questionSubjectList[
|
||||||
|
index
|
||||||
|
].questionSubjectOptionList.forEach((el) => {
|
||||||
|
if (el.id == item.id) {
|
||||||
|
el.optionChooseSign = "0";
|
||||||
|
} else {
|
||||||
|
el.optionChooseSign = "1";
|
||||||
|
}
|
||||||
|
});
|
||||||
|
},
|
||||||
|
// 复选框
|
||||||
|
radioChangecheck(e, item, index, aindex) {
|
||||||
|
console.log(e, item, index, "选中某个复选框时");
|
||||||
|
if (e == true) {
|
||||||
|
this.questiondata.questionSubjectList[index].questionSubjectOptionList[
|
||||||
|
aindex
|
||||||
|
].optionChooseSign = "0";
|
||||||
|
} else {
|
||||||
|
this.questiondata.questionSubjectList[index].questionSubjectOptionList[
|
||||||
|
aindex
|
||||||
|
].optionChooseSign = "1";
|
||||||
|
}
|
||||||
|
},
|
||||||
|
},
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.tk {
|
||||||
|
::v-deep .el-textarea__inner {
|
||||||
|
margin: 20px 0 10px 30px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
::v-deep .el-radio {
|
||||||
|
padding: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
::v-deep .el-checkbox-group {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
padding: 10px 0px 10px 24px;
|
||||||
|
}
|
||||||
|
|
||||||
|
::v-deep .el-checkbox {
|
||||||
|
padding: 10px 0 10px 0px;
|
||||||
|
// padding: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.custom-radio-group {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
padding: 10px 0 10px 10px;
|
||||||
|
|
||||||
|
.custom {
|
||||||
|
padding: 10px 0 10px 10px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.custom-radio-group {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
padding: 10px 0 10px 10px;
|
||||||
|
|
||||||
|
.custom {
|
||||||
|
padding: 10px 0 10px 10px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.bodytop {
|
||||||
|
position: relative;
|
||||||
|
top: 20px;
|
||||||
|
height: 500px;
|
||||||
|
width: 600px;
|
||||||
|
margin: 0 auto;
|
||||||
|
// background: red;f
|
||||||
|
overflow: auto;
|
||||||
|
border: 1px solid #e2e2e2;
|
||||||
|
|
||||||
|
.titledata {
|
||||||
|
margin: 30px 0px 15px 30px;
|
||||||
|
top: 14px;
|
||||||
|
font-size: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.audiotop {
|
||||||
|
margin: 10px 0px 10px 30px;
|
||||||
|
}
|
||||||
|
|
||||||
|
img {
|
||||||
|
// width: 362px;
|
||||||
|
// height: 127px;
|
||||||
|
margin: 0px 0px 0px 30px;
|
||||||
|
}
|
||||||
|
|
||||||
|
video {
|
||||||
|
margin: 0px 0px 0px 30px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.know {
|
||||||
|
margin: 11px 0px 10px 30px;
|
||||||
|
font-size: 20px;
|
||||||
|
font-weight: 550;
|
||||||
|
}
|
||||||
|
|
||||||
|
.knowlist {
|
||||||
|
margin: 10px 0px 10px 30px;
|
||||||
|
font-size: 16px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.right {
|
||||||
|
width: 100%;
|
||||||
|
height: 500px;
|
||||||
|
// background: yellow;
|
||||||
|
}
|
||||||
|
|
||||||
|
.header {
|
||||||
|
background-color: #f1f3f5;
|
||||||
|
padding-top: 10px;
|
||||||
|
|
||||||
|
::v-deep .el-tabs__header {
|
||||||
|
margin: 0 !important;
|
||||||
|
width: 100%;
|
||||||
|
// overflow: auto;
|
||||||
|
// height: 500px;
|
||||||
|
// background: red;
|
||||||
|
}
|
||||||
|
|
||||||
|
.bottomheader {
|
||||||
|
overflow: auto;
|
||||||
|
width: 99%;
|
||||||
|
background-color: #fff;
|
||||||
|
margin: 10px auto;
|
||||||
|
padding: 10px 20px;
|
||||||
|
|
||||||
|
.sport {
|
||||||
|
padding: 10px 50px 10px 10px;
|
||||||
|
font-size: 20px;
|
||||||
|
font-weight: 600;
|
||||||
|
}
|
||||||
|
|
||||||
|
.words {
|
||||||
|
font-size: 15px;
|
||||||
|
padding: 10px 50px 10px 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.sports {
|
||||||
|
position: absolute;
|
||||||
|
left: 50%;
|
||||||
|
transform: translate(-50%);
|
||||||
|
font-size: 18px;
|
||||||
|
font-weight: 600;
|
||||||
|
}
|
||||||
|
|
||||||
|
.word {
|
||||||
|
font-size: 14px;
|
||||||
|
font-weight: 550;
|
||||||
|
padding: 50px 50px 10px 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.videoleft {
|
||||||
|
width: 40%;
|
||||||
|
height: 200px;
|
||||||
|
background: red;
|
||||||
|
}
|
||||||
|
|
||||||
|
.time {
|
||||||
|
font-size: 20px;
|
||||||
|
font-weight: 550;
|
||||||
|
padding: 10px 50px 10px 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.number {
|
||||||
|
width: 25px;
|
||||||
|
height: 25px;
|
||||||
|
text-align: center;
|
||||||
|
display: inline-block;
|
||||||
|
color: white;
|
||||||
|
background: blue;
|
||||||
|
border-radius: 50%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.nexttime {
|
||||||
|
font-size: 15px;
|
||||||
|
padding: 10px 50px 10px 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.images {
|
||||||
|
width: 53%;
|
||||||
|
height: 241px;
|
||||||
|
margin: 0 auto;
|
||||||
|
background: red;
|
||||||
|
}
|
||||||
|
|
||||||
|
.attention {
|
||||||
|
font-size: 14px;
|
||||||
|
font-weight: 550;
|
||||||
|
padding: 10px 50px 10px 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
// .videobottom
|
||||||
|
// {
|
||||||
|
// font-size: 14px;
|
||||||
|
// font-weight: 550;
|
||||||
|
// padding: 10px 50px 10px 10px;
|
||||||
|
// }
|
||||||
|
}
|
||||||
|
|
||||||
|
.topheader {
|
||||||
|
width: 99%;
|
||||||
|
background-color: #fff;
|
||||||
|
margin: 0 auto;
|
||||||
|
|
||||||
|
.information {
|
||||||
|
display: flex;
|
||||||
|
flex-wrap: wrap;
|
||||||
|
padding: 10px 20px;
|
||||||
|
height: 110px;
|
||||||
|
|
||||||
|
.top,
|
||||||
|
.bottom {
|
||||||
|
color: #666666;
|
||||||
|
width: 100%;
|
||||||
|
display: flex;
|
||||||
|
|
||||||
|
div {
|
||||||
|
width: 25%;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.user {
|
||||||
|
width: 100%;
|
||||||
|
padding: 0 20px;
|
||||||
|
display: flex;
|
||||||
|
height: 80px;
|
||||||
|
align-items: center;
|
||||||
|
line-height: 80px;
|
||||||
|
|
||||||
|
.source {
|
||||||
|
display: flex;
|
||||||
|
|
||||||
|
.item {
|
||||||
|
line-height: 30px;
|
||||||
|
font-size: 14px;
|
||||||
|
margin-left: 20px;
|
||||||
|
border: 1px solid #c7c7c7;
|
||||||
|
width: 100px;
|
||||||
|
border-radius: 5px;
|
||||||
|
justify-content: center;
|
||||||
|
height: 30px;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
|
||||||
|
img {
|
||||||
|
margin-right: 10px;
|
||||||
|
width: 20px;
|
||||||
|
height: 20px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.name {
|
||||||
|
font-size: 20px;
|
||||||
|
padding-left: 12px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.gender {
|
||||||
|
padding-left: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.age {
|
||||||
|
padding-left: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.headsculpture {
|
||||||
|
border-radius: 50%;
|
||||||
|
width: 40px;
|
||||||
|
height: 40px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
||||||
@ -1067,7 +1067,7 @@ export default {
|
|||||||
}).then(() => {
|
}).then(() => {
|
||||||
this.$store.dispatch('tagsView/delView', this.$route).then(({ visitedViews }) => {
|
this.$store.dispatch('tagsView/delView', this.$route).then(({ visitedViews }) => {
|
||||||
this.$router.push({
|
this.$router.push({
|
||||||
path: "/question/question",
|
path: "/knowledge/question",
|
||||||
});
|
});
|
||||||
})
|
})
|
||||||
}).catch(() => {
|
}).catch(() => {
|
||||||
@ -1083,7 +1083,7 @@ export default {
|
|||||||
}).then(() => {
|
}).then(() => {
|
||||||
this.$store.dispatch('tagsView/delView', this.$route).then(({ visitedViews }) => {
|
this.$store.dispatch('tagsView/delView', this.$route).then(({ visitedViews }) => {
|
||||||
this.$router.push({
|
this.$router.push({
|
||||||
path: "/question/question",
|
path: "/knowledge/question",
|
||||||
});
|
});
|
||||||
})
|
})
|
||||||
}).catch(() => {
|
}).catch(() => {
|
||||||
@ -1148,7 +1148,7 @@ export default {
|
|||||||
goback() {
|
goback() {
|
||||||
this.$store.dispatch('tagsView/delView', this.$route).then(({ visitedViews }) => {
|
this.$store.dispatch('tagsView/delView', this.$route).then(({ visitedViews }) => {
|
||||||
this.$router.push({
|
this.$router.push({
|
||||||
path: "/question/question",
|
path: "/knowledge/question",
|
||||||
});
|
});
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
|
|||||||
154
src/views/system/satisfactionSurvey/index.vue
Normal file
154
src/views/system/satisfactionSurvey/index.vue
Normal file
@ -0,0 +1,154 @@
|
|||||||
|
<template>
|
||||||
|
<div class="app-container">
|
||||||
|
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" label-width="80px">
|
||||||
|
<el-form-item label="患者姓名" prop="patientName">
|
||||||
|
<el-input v-model="queryParams.patientName" placeholder="请输入患者姓名" clearable
|
||||||
|
@keyup.enter.native="handleQuery" style="width:200px" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="患者电话" prop="patientPhone">
|
||||||
|
<el-input v-model="queryParams.patientPhone" placeholder="请输入患者电话" clearable
|
||||||
|
@keyup.enter.native="handleQuery" style="width:200px" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="身份证号" prop="cardNo">
|
||||||
|
<el-input v-model="queryParams.cardNo" placeholder="请输入身份证号" clearable @keyup.enter.native="handleQuery"
|
||||||
|
style="width:200px" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item>
|
||||||
|
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
|
||||||
|
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
|
||||||
|
</el-form-item>
|
||||||
|
</el-form>
|
||||||
|
<el-table v-loading="loading" :data="patientInfoList">
|
||||||
|
<el-table-column label="序号" type="index" width="55" align="center" />
|
||||||
|
<el-table-column label="患者姓名" align="center" prop="patientName" />
|
||||||
|
<el-table-column label="患者电话" align="center" prop="patientPhone" width='120' />
|
||||||
|
<el-table-column label="出生日期" align="center" prop="birthDate" width='130' />
|
||||||
|
<el-table-column label="身份证号" align="center" prop="cardNo" width='130' />
|
||||||
|
<el-table-column label="性别" align="center" prop="sex">
|
||||||
|
<template slot-scope="scope">
|
||||||
|
{{ scope.row.sex == 'MALE' ? '男' : '' }}
|
||||||
|
{{ scope.row.sex == 'FEMALE' ? '女' : '' }}
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column label="年龄" align="center" prop="age" />
|
||||||
|
<el-table-column label="患者类型" align="center" prop="visitDate" width='130'>
|
||||||
|
<template slot-scope="scope">
|
||||||
|
<dict-tag :options="dict.type.patient_type" :value="scope.row.patientType" />
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column label="签约状态" align="center" prop="signStatus" width='130'>
|
||||||
|
<template slot-scope="scope">
|
||||||
|
<!-- <dict-tag :options="dict.type.sign_status" :value="scope.row.signStatus" /> -->
|
||||||
|
{{ scope.row.signStatus == 'UN_SIGN' ? '未签约' : '' }}
|
||||||
|
{{ scope.row.signStatus == 'IN_SIGN' ? '在签' : '' }}
|
||||||
|
{{ scope.row.signStatus == 'SEPARATE_SIGN' ? '解约' : '' }}
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column label="服务状态" align="center" prop="serviceStatus" width='130'>
|
||||||
|
<template slot-scope="scope">
|
||||||
|
{{ scope.row.serviceStatus == 'INTENTIONAL_SIGNING' ? '意向签约' : '' }}
|
||||||
|
{{ scope.row.serviceStatus == 'SERVICE_CENTER' ? '服务中' : '' }}
|
||||||
|
{{ scope.row.serviceStatus == 'SERVICE_END' ? '服务结束' : '' }}
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column label="就诊方式" align="center" prop="visitMethod">
|
||||||
|
<template slot-scope="scope">
|
||||||
|
<dict-tag :options="dict.type.visit_method" :value="scope.row.visitMethod" />
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column label="医院" align="center" prop="hospitalAgencyName" width='130' />
|
||||||
|
<el-table-column label="科室名称" align="center" prop="departmentName" width='130' />
|
||||||
|
<!-- <el-table-column label="患者健康状况" align="center" prop="patientHealthState">
|
||||||
|
<template slot-scope="scope">
|
||||||
|
{{ scope.row.patientHealthState == 'ABNORMAL' ? '异常' : '' }}
|
||||||
|
{{ scope.row.patientHealthState == 'GOOD' ? '良好' : '' }}
|
||||||
|
{{ scope.row.patientHealthState == 'BLACKLIST' ? '黑名单' : '' }}
|
||||||
|
</template>
|
||||||
|
</el-table-column> -->
|
||||||
|
<el-table-column label="操作" align="center" class-name="small-padding fixed-width" fixed="right" width="200">
|
||||||
|
<template slot-scope="scope">
|
||||||
|
<el-button size="mini" type="text" @click="goQuestionnaireDetails(scope.row)">满意度问卷详情</el-button>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
</el-table>
|
||||||
|
<pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNum"
|
||||||
|
:limit.sync="queryParams.pageSize" @pagination="getList" />
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
<script>
|
||||||
|
import { satisfactionSurvey } from "@/api/system/satisfactionSurvey";
|
||||||
|
import { getAge } from "@/utils/age";
|
||||||
|
export default {
|
||||||
|
name: "satisfactionSurvey",
|
||||||
|
dicts: ['visit_method', 'patient_source', 'patient_type', 'sign_status'],
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
// 遮罩层
|
||||||
|
loading: true,
|
||||||
|
// 总条数
|
||||||
|
total: 0,
|
||||||
|
// 患者信息表格数据
|
||||||
|
patientInfoList: [],
|
||||||
|
// 查询参数
|
||||||
|
queryParams: {
|
||||||
|
pageNum: 1,
|
||||||
|
pageSize: 10,
|
||||||
|
patientName: null,
|
||||||
|
patientPhone: null,
|
||||||
|
cardNo: null,
|
||||||
|
},
|
||||||
|
};
|
||||||
|
},
|
||||||
|
created() {
|
||||||
|
this.getList();
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
/** 查询信息列表 */
|
||||||
|
getList() {
|
||||||
|
this.loading = true;
|
||||||
|
this.queryParams.params = {};
|
||||||
|
satisfactionSurvey(this.queryParams).then(response => {
|
||||||
|
response.rows.forEach(e => {
|
||||||
|
e.birthDate ? e.age = getAge(e.birthDate) : ''
|
||||||
|
})
|
||||||
|
this.patientInfoList = response.rows;
|
||||||
|
this.total = response.total;
|
||||||
|
this.loading = false;
|
||||||
|
});
|
||||||
|
},
|
||||||
|
//跳转详情
|
||||||
|
goQuestionnaireDetails(row) {
|
||||||
|
this.$router.push({
|
||||||
|
path: "/satisfactionSurvey/SatisfactionQuestionnaireDetails",
|
||||||
|
query: {
|
||||||
|
patientQuestionSubmitResultId: row.patientQuestionSubmitResultId,
|
||||||
|
taskContent: row.taskContent,
|
||||||
|
taskType: row.taskType,
|
||||||
|
templateId: row.templateId,
|
||||||
|
cardNo: row.cardNo,
|
||||||
|
patientName: row.patientName,
|
||||||
|
patientPhone: row.patientPhone,
|
||||||
|
sex: row.sex,
|
||||||
|
routeHandleRemark: row.routeHandleRemark,
|
||||||
|
textRemindContent: row.textRemindContent,
|
||||||
|
birthDate: row.birthDate,
|
||||||
|
address: row.address,
|
||||||
|
patientSource: row.patientSource,
|
||||||
|
createTime: row.createTime,
|
||||||
|
age: row.birthDate ? getAge(row.birthDate) : "",
|
||||||
|
},
|
||||||
|
});
|
||||||
|
},
|
||||||
|
/** 搜索按钮操作 */
|
||||||
|
handleQuery() {
|
||||||
|
this.queryParams.pageNum = 1;
|
||||||
|
this.getList();
|
||||||
|
},
|
||||||
|
/** 重置按钮操作 */
|
||||||
|
resetQuery() {
|
||||||
|
this.resetForm("queryForm");
|
||||||
|
this.handleQuery();
|
||||||
|
},
|
||||||
|
}
|
||||||
|
};
|
||||||
|
</script>
|
||||||
Loading…
Reference in New Issue
Block a user