This commit is contained in:
2024-04-16 10:56:28 +08:00
parent a08c122063
commit dce69c73df
5 changed files with 355 additions and 12 deletions

View File

@ -4,7 +4,7 @@ import request from '@/utils/request'
// 查询患者宣教信息列表
export function getList(query) {
return request({
url: '/manage/patientPropaganda/getList',
url: '/manage/signnode/getNodeList',
method: 'get',
params: query
})

View File

@ -133,7 +133,7 @@
</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>
人工随访详情<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 == 'QUESTIONNAIRE_SCALE'">

View File

@ -0,0 +1,293 @@
<template>
<div class="header">
<div class="leftheader">
<div class="item" v-for="(item, index) in namelist" :key="index" @click="clicknameitem(item, index)"
:class="index == itemindex ? 'selectitem' : ''">
<div class="name">
{{ item.name }}
</div>
</div>
</div>
<div class="rightheader" v-if="categorylist.length > 0">
<div class="richtext">
<div class="text" style="font-size: 20px;"> 任务:</div>
<div v-for="item in categorylist" :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 @click="lookquestion(uitem)" 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-empty description="暂无" style="width: 100%;" v-else></el-empty>
<!-- 话术预览弹框 -->
<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>
</div>
</template>
<script>
import {
getList
} from '@/api/manage/healthEducation'
import questionopen from './questionopen.vue';
export default {
components: {
questionopen,
},
name: "RehabilitationPlanandRecords",
data() {
return {
baseUrl: process.env.VUE_APP_BASE_API,
//list
itemindex: 0,
namelist: [
{
name: '手动创建任务'
},
{
name: '专病管理路径'
}
],
categorylist: [],
query: {
patientId: '',
routeCheckStatus: 'AGREE',
taskCreateType: 'MANUAL_CREATE'
},
lookitem: {},
phoneopen: false,
propagandaopen: false,
};
},
mounted() {
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 = {}
},
clicknameitem(item, index) {
this.itemindex = index
if (index == 0) {
this.query.taskCreateType = 'MANUAL_CREATE'
} else {
this.query.taskCreateType = 'MANUAL_MATCHE'
}
this.info();
},
info() {
this.query.patientId = this.$route.query.patientId
getList(this.query).then(res => {
if (res.data.length > 0) {
this.categorylist = res.data
}
})
},
}
};
</script>
<style lang="scss" scoped>
.header {
background-color: #fff !important;
padding: 0 !important;
display: flex;
justify-content: space-between;
.rightheader {
width: 75%;
padding-top: 20px;
.titletop {
font-size: 16px;
font-weight: 700;
margin: 10px 0px 0 20px;
}
.bodytop {
.titledata {
margin: 30px 0px 15px 20px;
font-size: 20px;
}
.audiotop {
margin: 10px 0px 10px 20px;
}
img {
margin: 0px 0px 0px 20px;
}
.know {
margin: 11px 0px 10px 20px;
font-size: 16px;
}
.knowlist {
margin: 10px 0px 10px 20px;
font-size: 16px;
}
}
.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;
}
}
.richtext {
overflow: scroll;
//
overflow-x: hidden !important;
width: 100%;
margin: 0 auto;
height: 550px;
.textarea {
font-size: 14px;
font-weight: 400;
margin-bottom: 10px;
width: 100%;
}
.text {
font-size: 16px;
font-weight: bold;
}
}
}
.leftheader {
width: 20%;
margin-top: 20px;
height: 450px;
overflow: scroll;
//
overflow-x: hidden !important;
.selectitem {
background-color: #D2E9FC;
border-left: 2px solid #1890ff !important;
border-bottom: 1px solid #fff !important;
}
.item {
padding: 25px 10px;
position: relative;
border-left: 2px solid #fff;
border-bottom: 1px solid #E7E7E7;
.name {
font-size: 18px;
font-weight: 600;
}
}
}
}
</style>

View File

@ -1,15 +1,27 @@
<template>
<div class="header">
<div class="leftheader" v-if="categorylist.length > 0">
<div class="item" v-for="(item, index) in categorylist" :key="item.id" @click="clickcategory(item, index)"
:class="index == categoryindex ? 'selectitem' : ''">
<div class="item" v-for="(item, index) in categorylist" :key="item.propagandaInfoId"
@click="clickcategory(item, index)" :class="index == categoryindex ? 'selectitem' : ''">
<div class="name">
{{ item.propagandaTitle }}
</div>
</div>
</div>
<div class="rightheader" v-if="categorylist.length > 0">
<div class="richtext" v-html="categoryItem.propagandaContent">
<div class="richtext">
<div class="titletop">文章模板:{{ categoryItem.propagandaTitle }}</div>
<div class="bodytop">
<div class="titledata">{{ categoryItem.propagandaTitle }}</div>
<div>
<img :src="baseUrl + categoryItem.propagandaCoverPath" alt="" />
<div class="know">知识卡片</div>
<div class="knowlist">
{{ categoryItem.propagandaContent }}
</div>
</div>
</div>
<div v-html="categoryItem.propagandaContent"></div>
</div>
</div>
<el-empty description="暂无" style="width: 100%;" v-else></el-empty>
@ -23,6 +35,7 @@ export default {
name: "healthEducation",
data() {
return {
baseUrl: process.env.VUE_APP_BASE_API,
//
categoryindex: 0,
//item
@ -30,7 +43,9 @@ export default {
//list
categorylist: [],
query: {
patientId: ''
patientId: '',
routeCheckStatus: 'AGREE',
taskType: 'PROPAGANDA_ARTICLE'
}
};
},
@ -46,7 +61,11 @@ export default {
this.query.patientId = this.$route.query.patientId
getList(this.query).then(res => {
if (res.data.length > 0) {
this.categorylist = res.data
res.data.forEach(e => {
e.nodeList.forEach(el => {
this.categorylist.push(el)
})
})
this.categoryItem = this.categorylist[0]
}
})
@ -65,6 +84,37 @@ export default {
padding-top: 20px;
border-left: 3px solid #DFE4ED;
.titletop {
font-size: 16px;
font-weight: 700;
margin: 10px 0px 0 20px;
}
.bodytop {
.titledata {
margin: 30px 0px 15px 20px;
font-size: 20px;
}
.audiotop {
margin: 10px 0px 10px 20px;
}
img {
margin: 0px 0px 0px 20px;
}
.know {
margin: 11px 0px 10px 20px;
font-size: 16px;
}
.knowlist {
margin: 10px 0px 10px 20px;
font-size: 16px;
}
}
.richtext {
overflow: scroll;
//

View File

@ -52,12 +52,12 @@
</div>
</div>
<div class="bottomheader">
<el-tabs v-model="activeName" @tab-click="handleClick">
<el-tabs v-model="activeName">
<el-tab-pane label="就诊记录" name="first">
<visitRecords></visitRecords>
</el-tab-pane>
<el-tab-pane label="康复计划及记录" name="second">
<el-empty description="暂无" style="width: 100%;"></el-empty>
<RehabilitationPlanandRecords v-if="activeName == 'second'"></RehabilitationPlanandRecords>
</el-tab-pane>
<el-tab-pane label="健康宣教" name="third">
<healthEducation v-if="activeName == 'third'"></healthEducation>
@ -78,6 +78,7 @@ import visitRecords from '../components/visitRecords.vue';
import healthEducation from '../components/healthEducation.vue';
import indicatorMonitoring from '../components/indicatorMonitoring.vue';
import signingRecords from '../components/signingRecords.vue';
import RehabilitationPlanandRecords from '../components/RehabilitationPlanandRecords.vue';
export default {
components: {
//
@ -88,6 +89,8 @@ export default {
indicatorMonitoring,
//
signingRecords,
//
RehabilitationPlanandRecords
},
name: "patientdetails",
data() {
@ -98,9 +101,6 @@ export default {
created() {
},
methods: {
handleClick(tab, event) {
console.log(tab, event);
},
}
};
</script>