Merge remote-tracking branch 'origin/dev' into dev

This commit is contained in:
闫晓茹 2024-07-01 17:58:50 +08:00
commit a8a13a822a
8 changed files with 1191 additions and 937 deletions

View File

@ -1,396 +1,503 @@
<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 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 class="rightheader" v-if="categorylist.length > 0">
<div class="richtext" v-if="itemindex == 1">
<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 class="richtext" v-if="itemindex == 0">
<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 class="text">
路径详情: <el-button @click="lookspecialDiseaseNode(item)"
style="padding: 6px 10px;">预览</el-button>
</div>
<div class="text">
</div>
<div class="text">
触发条件:
</div>
<div class="text">
</div>
<div v-for="uitem in item.specialDiseaseRoute.triggerConditionList" :key="uitem.id" class="text"
style="font-weight: 400;width:100%">
<div class="tagtitle">
<span>
{{ uitem.triggerConditionName == 'DIAGNOSIS' ? '诊断' : '' }}
{{ uitem.triggerConditionName == 'DRESSING_CHANGE_DATE' ? '换药日期' : '' }}
{{ uitem.triggerConditionName == 'TREATMENT_METHOD' ? '治疗方式' : '' }}
{{ uitem.triggerConditionName == 'SURGICAL_NAME' ? '手术名称' : '' }}
{{ uitem.triggerConditionName == 'DRUG_NAME' ? '药品名称' : '' }}
</span>
<span style="padding: 0;">
{{ uitem.triggerConditionOperator == 'CONTAIN' ? '包含' : '' }}
{{ uitem.triggerConditionOperator == 'NOT_CONTAIN' ? '不包含' : '' }}
{{ uitem.triggerConditionOperator == 'EQUAL_TO' ? '等于' : '' }}
{{ uitem.triggerConditionOperator == 'NOT_EQUAL_TO' ? '不等于' : '' }}
</span>
<span style="padding: 0;">
{{ uitem.triggerConditionValue }}
</span>
</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="bodytop">
<div class="titletop">文章模板:{{ lookitem.propagandaTitle }}</div>
<div class="titledata">{{ lookitem.propagandaTitle }}</div>
<img :src="baseUrl + lookitem.propagandaCoverPath" alt="" />
<div class="know">知识卡片</div>
<div v-html="lookitem.propagandaContent"></div>
</div>
</el-dialog>
<!-- 问卷预览弹框 -->
<questionopen ref="question" :lookitem="lookitem"></questionopen>
<!-- 专病节点预览 -->
<el-dialog title="专病节点预览" :visible.sync="specialDiseaseNodeopen" width="90%" v-if="specialDiseaseNodeopen">
<specialDiseaseNodeopen :lookitem="lookitem">
</specialDiseaseNodeopen>
</el-dialog>
</div>
</div>
<div class="rightheader" v-if="categorylist.length > 0">
<div class="richtext" v-if="itemindex == 1">
<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 class="richtext" v-if="itemindex == 0">
<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 class="text">
路径详情:
<el-button
@click="lookspecialDiseaseNode(item)"
style="padding: 6px 10px"
>预览</el-button
>
</div>
<div class="text"></div>
<div class="text">触发条件:</div>
<div class="text"></div>
<div
v-for="uitem in item.specialDiseaseRoute.triggerConditionList"
:key="uitem.id"
class="text"
style="font-weight: 400; width: 100%"
>
<div class="tagtitle">
<span>
{{ uitem.triggerConditionName == "DIAGNOSIS" ? "诊断" : "" }}
{{
uitem.triggerConditionName == "DRESSING_CHANGE_DATE"
? "换药日期"
: ""
}}
{{
uitem.triggerConditionName == "TREATMENT_METHOD"
? "治疗方式"
: ""
}}
{{
uitem.triggerConditionName == "SURGICAL_NAME"
? "手术名称"
: ""
}}
{{
uitem.triggerConditionName == "DRUG_NAME" ? "药品名称" : ""
}}
</span>
<span style="padding: 0">
{{
uitem.triggerConditionOperator == "CONTAIN" ? "包含" : ""
}}
{{
uitem.triggerConditionOperator == "NOT_CONTAIN"
? "不包含"
: ""
}}
{{
uitem.triggerConditionOperator == "EQUAL_TO" ? "等于" : ""
}}
{{
uitem.triggerConditionOperator == "NOT_EQUAL_TO"
? "不等于"
: ""
}}
</span>
<span style="padding: 0">
{{ uitem.triggerConditionValue }}
</span>
</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="bodytop">
<div class="titletop">文章模板:{{ lookitem.propagandaTitle }}</div>
<div class="titledata">{{ lookitem.propagandaTitle }}</div>
<img :src="baseUrl + lookitem.propagandaCoverPath" alt="" />
<div class="know">知识卡片</div>
<div v-html="lookitem.propagandaContent"></div>
</div>
</el-dialog>
<!-- 问卷预览弹框 -->
<questionopen ref="question" :lookitem="lookitem"></questionopen>
<!-- 专病节点预览 -->
<el-dialog
title="专病节点预览"
:visible.sync="specialDiseaseNodeopen"
width="90%"
v-if="specialDiseaseNodeopen"
>
<specialDiseaseNodeopen :lookitem="lookitem"> </specialDiseaseNodeopen>
</el-dialog>
</div>
</template>
<script>
import {
getList
getList
} from '@/api/manage/healthEducation'
import questionopen from './questionopen.vue';
import specialDiseaseNodeopen from './specialDiseaseNodeopen.vue';
export default {
components: {
questionopen,
specialDiseaseNodeopen
},
name: "RehabilitationPlanandRecords",
data() {
return {
baseUrl: process.env.VUE_APP_BASE_API,
//list
itemindex: 0,
manageRouteId:'',
namelist: [
{
name: '专病管理路径'
},
{
name: '手动创建任务'
},
],
categorylist: [],
query: {
patientId: '',
routeCheckStatus: 'AGREE',
taskCreateType: 'MANUAL_MATCHE'
},
lookitem: {},
phoneopen: false,
propagandaopen: false,
specialDiseaseNodeopen: false,
loading: null,
};
},
mounted() {
this.info(0);
},
methods: {
//
lookspecialDiseaseNode(item) {
this.lookitem = {
routeName: item.routeName,
suitRange: item.suitRange,
id: item.specialDiseaseRoute.specialDiseaseRouteId,
manageRouteId:this.manageRouteId,
components: {
questionopen,
specialDiseaseNodeopen
},
name: "RehabilitationPlanandRecords",
data() {
return {
baseUrl: process.env.VUE_APP_BASE_API,
//list
itemindex: 0,
manageRouteId: '',
namelist: [
{
name: '专病管理路径'
},
{
name: '手动创建任务'
},
],
categorylist: [],
query: {
patientId: '',
routeCheckStatus: 'AGREE',
taskCreateType: 'MANUAL_MATCHE'
},
lookitem: {},
phoneopen: false,
propagandaopen: false,
specialDiseaseNodeopen: false,
loading: null,
};
},
mounted() {
this.info(0);
},
methods: {
//
lookspecialDiseaseNode(item) {
this.lookitem = {
routeName: item.routeName,
suitRange: item.suitRange,
id: item.specialDiseaseRoute.specialDiseaseRouteId,
manageRouteId: this.manageRouteId,
}
this.specialDiseaseNodeopen = true
},
//
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.loading = this.$loading({
lock: true,
text: '加载数据中',
spinner: 'el-icon-loading',
background: 'rgba(255,255,255,0.7)'
});
if (index == 1) {
this.query.taskCreateType = 'MANUAL_CREATE'
} else {
this.query.taskCreateType = 'MANUAL_MATCHE'
}
this.info(index);
},
info(index) {
this.loading = this.$loading({
lock: true,
text: '加载数据中',
spinner: 'el-icon-loading',
background: 'rgba(255,255,255,0.7)'
});
this.query.patientId = this.$route.query.patientId
getList(this.query).then(res => {
this.itemindex = index
this.loading.close();
this.categorylist = res.data
this.manageRouteId=this.categorylist[0].manageRouteId
})
},
}
}
this.specialDiseaseNodeopen = true
},
//
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.loading = this.$loading({
lock: true,
text: '加载数据中',
spinner: 'el-icon-loading',
background: 'rgba(255,255,255,0.7)'
});
if (index == 1) {
this.query.taskCreateType = 'MANUAL_CREATE'
} else {
this.query.taskCreateType = 'MANUAL_MATCHE'
}
this.info(index);
},
info(index) {
this.loading = this.$loading({
lock: true,
text: '加载数据中',
spinner: 'el-icon-loading',
background: 'rgba(255,255,255,0.7)'
});
this.query.patientId = this.$route.query.patientId
getList(this.query).then(res => {
this.itemindex = index
this.loading.close();
this.categorylist = res.data
this.manageRouteId = this.categorylist[0].manageRouteId
})
},
}
};
</script>
<style lang="scss" scoped>
::v-deep img{
width:100%;
::v-deep img {
width: 100%;
}
::v-deep iframe{
width:100%;
height: 500px;
::v-deep iframe {
width: 100%;
height: 500px;
}
.bodytop {
width: 96%;
margin: 0 auto;
width: 96%;
margin: 0 auto;
.titletop {
font-size: 20px;
font-weight: 700;
margin: 10px 0px 0 0;
}
.titletop {
font-size: 20px;
font-weight: 700;
margin: 10px 0px 0 0;
}
.titledata {
margin: 30px 0px 15px 0;
font-size: 16px;
}
.titledata {
margin: 30px 0px 15px 0;
font-size: 16px;
}
img {
margin: 20px 0;
width: 100%;
}
img {
margin: 20px 0;
width: 100%;
}
.audiotop {
margin: 10px 0px 10px 0;
}
.audiotop {
margin: 10px 0px 10px 0;
}
.know {
margin: 11px 0px 10px 0;
font-size: 16px;
}
.know {
margin: 11px 0px 10px 0;
font-size: 16px;
}
.knowlist {
margin: 10px 0px 10px 0;
font-size: 16px;
}
.knowlist {
margin: 10px 0px 10px 0;
font-size: 16px;
}
}
.header {
background-color: #fff !important;
padding: 0 !important;
display: flex;
justify-content: space-between;
background-color: #fff !important;
padding: 0 !important;
display: flex;
justify-content: space-between;
height: calc(100vh - 84px);
.rightheader {
width: 75%;
padding-top: 20px;
.rightheader {
width: 75%;
padding-top: 20px;
.tagtitle {
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
width: 100%;
margin: 0px;
color: black;
.tagtitle {
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
width: 100%;
margin: 0px;
color: black;
span {
padding-left: 10px;
}
}
.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;
height: 30px;
line-height: 30px;
}
}
span {
padding-left: 10px;
}
}
.leftheader {
width: 20%;
margin-top: 20px;
height: 450px;
overflow: scroll;
//
overflow-x: hidden !important;
.texts {
margin: 16px 0 20px;
flex-wrap: wrap;
width: 100%;
display: flex;
font-size: 14px;
.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;
}
}
.text {
margin-bottom: 10px;
width: 50%;
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
-o-text-overflow: ellipsis;
}
}
.richtext {
height: calc(100vh - 352px);
width: 100%;
padding-left: 20px;
overflow: auto;
overflow-x: hidden !important;
.textarea {
font-size: 14px;
font-weight: 400;
margin-bottom: 10px;
width: 100%;
}
.text {
font-size: 16px;
font-weight: bold;
height: 30px;
line-height: 30px;
}
}
}
.leftheader {
height: calc(100vh - 352px);
width: 20%;
margin-top: 20px;
// height: 450px;
overflow: auto;
//
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,161 +1,170 @@
<template>
<div class="header">
<div class="leftheader" v-if="categorylist.length > 0">
<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 class="header">
<div class="leftheader" v-if="categorylist.length > 0">
<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 class="rightheader" v-if="categorylist.length > 0">
<div class="richtext">
<div class="bodytop">
<div class="titletop">文章模板:{{ categoryItem.propagandaTitle }}</div>
<div class="titledata">{{ categoryItem.propagandaTitle }}</div>
<img :src="baseUrl + categoryItem.propagandaCoverPath" alt="" />
<div class="know">知识卡片</div>
<div v-html="categoryItem.propagandaContent"></div>
</div>
</div>
</div>
<el-empty description="暂无" style="width: 100%;" v-else></el-empty>
</div>
</div>
<div class="rightheader" v-if="categorylist.length > 0">
<div class="richtext">
<div class="bodytop">
<div class="titletop">
文章模板:{{ categoryItem.propagandaTitle }}
</div>
<div class="titledata">{{ categoryItem.propagandaTitle }}</div>
<img :src="baseUrl + categoryItem.propagandaCoverPath" alt="" />
<div class="know">知识卡片</div>
<div v-html="categoryItem.propagandaContent"></div>
</div>
</div>
</div>
<el-empty description="暂无" style="width: 100%" v-else></el-empty>
</div>
</template>
<script>
import {
signnodegetNodeListByPatient,
getList
signnodegetNodeListByPatient,
getList
} from '@/api/manage/healthEducation'
export default {
name: "healthEducation",
data() {
return {
baseUrl: process.env.VUE_APP_BASE_API,
//
categoryindex: 0,
//item
categoryItem: {},
//list
categorylist: [],
query: {
patientId: '',
routeCheckStatus: 'AGREE',
taskType: 'PROPAGANDA_ARTICLE'
}
};
name: "healthEducation",
data() {
return {
baseUrl: process.env.VUE_APP_BASE_API,
//
categoryindex: 0,
//item
categoryItem: {},
//list
categorylist: [],
query: {
patientId: '',
routeCheckStatus: 'AGREE',
taskType: 'PROPAGANDA_ARTICLE'
}
};
},
mounted() {
this.info();
},
methods: {
clickcategory(item, index) {
this.categoryindex = index
this.categoryItem = item
},
mounted() {
this.info();
info() {
this.query.patientId = this.$route.query.patientId
signnodegetNodeListByPatient(this.query).then(res => {
if (res.data.length > 0) {
res.data.forEach(e => {
this.categorylist.push(e.detailInfo)
// e.detailInfo.forEach(el => {
// this.categorylist.push(el)
// })
})
this.categoryItem = this.categorylist[0]
}
})
},
methods: {
clickcategory(item, index) {
this.categoryindex = index
this.categoryItem = item
},
info() {
this.query.patientId = this.$route.query.patientId
signnodegetNodeListByPatient(this.query).then(res => {
if (res.data.length > 0) {
res.data.forEach(e => {
this.categorylist.push(e.detailInfo)
// e.detailInfo.forEach(el => {
// this.categorylist.push(el)
// })
})
this.categoryItem = this.categorylist[0]
}
})
},
}
}
};
</script>
<style lang="scss" scoped>
::v-deep iframe{
width:100%;
height: 500px;
::v-deep iframe {
width: 100%;
height: 500px;
}
.header {
background-color: #fff !important;
padding: 0 !important;
display: flex;
background-color: #fff !important;
padding: 0 !important;
display: flex;
height: calc(100vh - 84px);
.rightheader {
width: 80%;
padding-top: 20px;
border-left: 3px solid #DFE4ED;
.rightheader {
width: 80%;
padding-top: 20px;
border-left: 3px solid #dfe4ed;
.bodytop {
width: 96%;
margin: 0 auto;
.bodytop {
width: 96%;
margin: 0 auto;
.titletop {
font-size: 20px;
font-weight: 700;
margin: 10px 0px 0 0;
}
.titletop {
font-size: 20px;
font-weight: 700;
margin: 10px 0px 0 0;
}
.titledata {
margin: 30px 0px 15px 0;
font-size: 16px;
}
.titledata {
margin: 30px 0px 15px 0;
font-size: 16px;
}
.audiotop {
margin: 10px 0px 10px 0;
}
.audiotop {
margin: 10px 0px 10px 0;
}
img {
width: 100%;
margin: 0px 0px 0px 0;
}
img {
width: 100%;
margin: 0px 0px 0px 0;
}
.know {
margin: 11px 0px 10px 0;
font-size: 16px;
}
.know {
margin: 11px 0px 10px 0;
font-size: 16px;
}
.knowlist {
margin: 10px 0px 10px 0;
font-size: 16px;
}
}
.richtext {
overflow: scroll;
//
overflow-x: hidden !important;
width: 100%;
margin: 0 auto;
height: 450px;
// border: 1px solid #CCCCCC;
}
.knowlist {
margin: 10px 0px 10px 0;
font-size: 16px;
}
}
.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;
}
}
.richtext {
height: calc(100vh - 352px);
overflow: auto;
overflow-x: hidden !important;
width: 100%;
margin: 0 auto;
// border: 1px solid #CCCCCC;
}
}
.leftheader {
height: calc(100vh - 352px);
width: 20%;
margin-top: 20px;
// height: 450px;
overflow: auto;
//
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

@ -229,10 +229,12 @@ export default {
}
.leftheader {
height: calc(100vh - 352px);
width: 20%;
margin-top: 20px;
height: 450px;
overflow: scroll;
// height: 450px;
overflow: auto;
//
overflow-x: hidden !important;

View File

@ -1,193 +1,273 @@
<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="time">{{ item.signTime }}
</div>
<div class="name"> {{ item.packageName }}
</div>
<el-tag class="type" size="mini">服务中</el-tag>
<!-- <el-tag class="type" size="mini" type="success">门诊</el-tag> -->
</div>
</div>
<div class="rightheader" v-if="categorylist.length > 0">
<div class="richtext">
<el-descriptions title="基本信息" style="margin-top: 20px;">
<el-descriptions-item label="医院">{{ ByRecord.hospitalAgencyName }}</el-descriptions-item>
<el-descriptions-item label="科室">{{ ByRecord.departmentName }}</el-descriptions-item>
<el-descriptions-item label="签约时诊断">{{ ByRecord.signDiagnosis }}</el-descriptions-item>
<el-descriptions-item label="院区">{{ ByRecord.campusAgencyName }}</el-descriptions-item>
<el-descriptions-item label="病区">{{ ByRecord.wardName }}</el-descriptions-item>
<el-descriptions-item label="审核后诊断">{{ ByRecord.reviewDiagnosis }}</el-descriptions-item>
</el-descriptions>
<el-descriptions title="签约信息" style="margin-top: 40px;">
<el-descriptions-item label="服务包">{{ ByRecord.packageName }}</el-descriptions-item>
<el-descriptions-item label="服务包缴费状态">{{ ByRecord.packagePaymentStatus == 'PAID' ? '已缴费' :
ByRecord.packagePaymentStatus == 'UNPAID_FEES' ? '未缴费' : '' }}</el-descriptions-item>
<el-descriptions-item label="到期时间">{{ ByRecord.serviceEndTime }}</el-descriptions-item>
<el-descriptions-item label="服务包价格">{{ ByRecord.packagePrice }}</el-descriptions-item>
<el-descriptions-item label="服务时间">{{ ByRecord.serviceStartTime }}</el-descriptions-item>
<el-descriptions-item label="服务周期">{{ ByRecord.packageTerm }}{{ ByRecord.packageTermUnit }}
</el-descriptions-item>
<el-descriptions-item label="签约时间">{{ ByRecord.signTime }}</el-descriptions-item>
</el-descriptions>
<el-descriptions title="专病管理路径" style="margin-top: 20px;">
<el-descriptions-item label="路径名称">{{ ByRecord.routeName }}</el-descriptions-item>
</el-descriptions>
<el-descriptions title="硬件信息" style="margin-top: 20px;" class="descriptions">
<el-descriptions-item>
<el-table :data="ByRecord.signDevices" style="width: 100%">
<el-table-column label="序号" type="index" width="55" align="center" />
<el-table-column prop="hardwareType" label="硬件类型" width="180" align="center">
<template slot-scope="scope">
{{ scope.row.hardwareType == 'BLOOD_PRESSURE' ? '血压仪' : '' }}
{{ scope.row.hardwareType == 'GLUCOSE_METER' ? '血糖仪' : '' }}
{{ scope.row.hardwareType == 'ELECTROCARDIOGRA' ? '心电仪' : '' }}
</template>
</el-table-column>
<el-table-column prop="snCode" label="SN码" width="180" align="center" />
<el-table-column prop="hardwarePrice" label="硬件金额(元)" align="center" />
<el-table-column prop="hardwareStatus" label="硬件状态" align="center" />
</el-table>
</el-descriptions-item>
</el-descriptions>
<el-descriptions title="其他材料" style="margin-top: 20px;" class="descriptions">
<el-descriptions-item>
<el-image v-for="item in ByRecord.signPatientInformeds" :key="item.signPatientRecordId"
class="img" :src="item.informedFilePath" :preview-src-list="srcList" />
</el-descriptions-item>
</el-descriptions>
</div>
</div>
<el-empty description="暂无" v-else style="width: 100%;"></el-empty>
<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="time">{{ item.signTime }}</div>
<div class="name">{{ item.packageName }}</div>
<el-tag class="type" size="mini">服务中</el-tag>
<!-- <el-tag class="type" size="mini" type="success">门诊</el-tag> -->
</div>
</div>
<div class="rightheader" v-if="categorylist.length > 0">
<div class="richtext">
<el-descriptions title="基本信息" style="margin-top: 20px">
<el-descriptions-item label="医院">{{
ByRecord.hospitalAgencyName
}}</el-descriptions-item>
<el-descriptions-item label="科室">{{
ByRecord.departmentName
}}</el-descriptions-item>
<el-descriptions-item label="签约时诊断">{{
ByRecord.signDiagnosis
}}</el-descriptions-item>
<el-descriptions-item label="院区">{{
ByRecord.campusAgencyName
}}</el-descriptions-item>
<el-descriptions-item label="病区">{{
ByRecord.wardName
}}</el-descriptions-item>
<el-descriptions-item label="审核后诊断">{{
ByRecord.reviewDiagnosis
}}</el-descriptions-item>
</el-descriptions>
<el-descriptions title="签约信息" style="margin-top: 40px">
<el-descriptions-item label="服务包">{{
ByRecord.packageName
}}</el-descriptions-item>
<el-descriptions-item label="服务包缴费状态">{{
ByRecord.packagePaymentStatus == "PAID"
? "已缴费"
: ByRecord.packagePaymentStatus == "UNPAID_FEES"
? "未缴费"
: ""
}}</el-descriptions-item>
<el-descriptions-item label="到期时间">{{
ByRecord.serviceEndTime
}}</el-descriptions-item>
<el-descriptions-item label="服务包价格">{{
ByRecord.packagePrice
}}</el-descriptions-item>
<el-descriptions-item label="服务时间">{{
ByRecord.serviceStartTime
}}</el-descriptions-item>
<el-descriptions-item label="服务周期"
>{{ ByRecord.packageTerm }}{{ ByRecord.packageTermUnit }}
</el-descriptions-item>
<el-descriptions-item label="签约时间">{{
ByRecord.signTime
}}</el-descriptions-item>
</el-descriptions>
<el-descriptions title="专病管理路径" style="margin-top: 20px">
<el-descriptions-item label="路径名称">{{
ByRecord.routeName
}}</el-descriptions-item>
</el-descriptions>
<el-descriptions
title="硬件信息"
style="margin-top: 20px"
class="descriptions"
>
<el-descriptions-item>
<el-table :data="ByRecord.signDevices" style="width: 100%">
<el-table-column
label="序号"
type="index"
width="55"
align="center"
/>
<el-table-column
prop="hardwareType"
label="硬件类型"
width="180"
align="center"
>
<template slot-scope="scope">
{{
scope.row.hardwareType == "BLOOD_PRESSURE" ? "血压仪" : ""
}}
{{
scope.row.hardwareType == "GLUCOSE_METER" ? "血糖仪" : ""
}}
{{
scope.row.hardwareType == "ELECTROCARDIOGRA" ? "心电仪" : ""
}}
</template>
</el-table-column>
<el-table-column
prop="snCode"
label="SN码"
width="180"
align="center"
/>
<el-table-column
prop="hardwarePrice"
label="硬件金额(元)"
align="center"
/>
<el-table-column
prop="hardwareStatus"
label="硬件状态"
align="center"
/>
</el-table>
</el-descriptions-item>
</el-descriptions>
<el-descriptions
title="其他材料"
style="margin-top: 20px"
class="descriptions"
>
<el-descriptions-item>
<el-image
v-for="item in ByRecord.signPatientInformeds"
:key="item.signPatientRecordId"
class="img"
:src="item.informedFilePath"
:preview-src-list="srcList"
/>
</el-descriptions-item>
</el-descriptions>
</div>
</div>
<el-empty description="暂无" v-else style="width: 100%"></el-empty>
</div>
</template>
<script>
import {
getByPatient,
getByRecordId
getByPatient,
getByRecordId
} from '@/api/manage/signingRecords'
export default {
name: "signingRecords",
data() {
return {
srcList: [],
//
categoryindex: 0,
//item
categoryItem: {},
//list
categorylist: [],
ByRecord: { signDevices: [], },
};
},
created() {
this.info();
},
methods: {
info() {
getByPatient(this.$route.query.patientId).then(res => {
if (res.data.length > 0) {
this.categorylist = res.data
this.categoryItem = this.categorylist[0]
this.getByRecordIdinfo();
}
})
},
getByRecordIdinfo() {
getByRecordId(this.categoryItem.id).then(res => {
this.ByRecord = res.data
this.ByRecord.signPatientInformeds.forEach(e => {
e.informedFilePath = process.env.VUE_APP_BASE_API + e.informedFilePath
this.srcList.push(e.informedFilePath)
})
})
},
clickcategory(item, index) {
this.categoryindex = index
this.categoryItem = item
this.getByRecordIdinfo();
name: "signingRecords",
data() {
return {
srcList: [],
//
categoryindex: 0,
//item
categoryItem: {},
//list
categorylist: [],
ByRecord: { signDevices: [], },
};
},
created() {
this.info();
},
methods: {
info() {
getByPatient(this.$route.query.patientId).then(res => {
if (res.data.length > 0) {
this.categorylist = res.data
this.categoryItem = this.categorylist[0]
this.getByRecordIdinfo();
}
})
},
getByRecordIdinfo() {
getByRecordId(this.categoryItem.id).then(res => {
this.ByRecord = res.data
this.ByRecord.signPatientInformeds.forEach(e => {
e.informedFilePath = process.env.VUE_APP_BASE_API + e.informedFilePath
this.srcList.push(e.informedFilePath)
})
})
},
clickcategory(item, index) {
this.categoryindex = index
this.categoryItem = item
this.getByRecordIdinfo();
}
}
};
</script>
<style lang="scss" scoped>
.img {
width: 100px;
height: 100px;
width: 100px;
height: 100px;
}
.header {
background-color: #fff !important;
padding: 0 !important;
display: flex;
height: calc(100vh - 84px);
background-color: #fff !important;
padding: 0 !important;
display: flex;
.descriptions {
::v-deep .el-descriptions-item__label.has-colon::after {
display: none;
}
.descriptions {
::v-deep .el-descriptions-item__label.has-colon::after {
display: none;
}
}
.rightheader {
height: calc(100vh - 352px);
width: 75%;
padding-top: 20px;
// overflow-y: auto;
/* overflow-y: auto; */
border-left: 3px solid #dfe4ed;
.richtext {
height: calc(100vh - 352px);
width: 94%;
margin: 0 auto;
// height: 450px;
overflow: auto;
//
overflow-x: hidden !important;
}
}
.leftheader {
height: calc(100vh - 352px);
margin-top: 20px;
width: 25%;
/* height: 450px; */
overflow: auto;
overflow-x: hidden !important;
.selectitem {
background-color: #d2e9fc;
border-left: 2px solid #1890ff !important;
border-bottom: 1px solid #fff !important;
}
.rightheader {
width: 75%;
padding-top: 20px;
border-left: 3px solid #DFE4ED;
.item {
height: 100px;
padding: 25px 10px;
position: relative;
border-left: 2px solid #fff;
border-bottom: 1px solid #e7e7e7;
.richtext {
width: 90%;
margin: 0 auto;
height: 450px;
overflow: scroll;
//
overflow-x: hidden !important;
}
}
.leftheader {
margin-top: 20px;
width: 25%;
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 {
height: 100px;
padding: 25px 10px;
position: relative;
border-left: 2px solid #fff;
border-bottom: 1px solid #E7E7E7;
.type {
position: absolute;
right: 10px;
top: 20px;
font-size: 12px;
}
.name {
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
height: 30px;
line-height: 30px;
font-size: 18px;
font-weight: 600;
}
.time {
line-height: 20px;
height: 20px;
font-size: 14px;
}
}
.type {
position: absolute;
right: 10px;
top: 20px;
font-size: 12px;
}
.name {
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
height: 30px;
line-height: 30px;
font-size: 18px;
font-weight: 600;
}
.time {
line-height: 20px;
height: 20px;
font-size: 14px;
}
}
}
}
</style>

View File

@ -1,297 +1,350 @@
<template>
<div class="header">
<div class="leftheader">
<div class="time">
<el-date-picker v-model="visitDate" type="daterange" range-separator="" start-placeholder="开始日期"
value-format="yyyy-MM-dd" :picker-options="pickerOptions" end-placeholder="结束日期" style="width:95%">
</el-date-picker>
</div>
<div class="list">
<div class="item" v-for="(item, index) in categorylist" :key="item.id"
@click="clickcategory(item, index)"
:class="item.visitMethod == 'BE_IN_HOSPITAL' && index == categoryindex ? 'zyitem' : item.visitMethod == 'OUTPATIENT_SERVICE' && index == categoryindex ? 'mzitem' : ''">
<div class="time">{{ item.visitDate }}
</div>
<div class="name">
{{ item.visitName }}
</div>
<div class="text">
<span>
{{ item.visitDept }}
</span>
<span style="margin-left: 10px;">
{{ item.createBy }}
</span>
</div>
<el-tag v-if="item.visitMethod == 'BE_IN_HOSPITAL'" class="type" size="mini">住院</el-tag>
<el-tag v-if="item.visitMethod == 'OUTPATIENT_SERVICE'" class="type" size="mini"
type="success">门诊</el-tag>
</div>
</div>
</div>
<div class="rightheader">
<div class="toptitle" v-if="categoryItem && categoryItem.visitMethod == 'BE_IN_HOSPITAL'">
<div style="border-radius: 10px 0 0 10px" :class="recordindex == 0 ? 'zyclass' : ''"
@click="clickrecord(0)">
入院记录
</div>
<div class="centerdiv" :class="recordindex == 1 ? 'zyclass' : ''" @click="clickrecord(1)">
出院记录
</div>
<div style="border-radius: 0 10px 10px 0" :class="recordindex == 2 ? 'zyclass' : ''"
@click="clickrecord(2)">
手术记录</div>
</div>
<div class="toptitle" v-if="categoryItem && categoryItem.visitMethod == 'OUTPATIENT_SERVICE'">
<div style="border-radius: 10px" :class="recordindex == 3 ? 'mzclass' : ''" @click="clickrecord(3)">
门诊记录
</div>
</div>
<div class="righttext" v-if="categoryItem">
<div v-if="recordindex == 0">
<p v-html="categoryItem.inHospitalInfo"></p>
</div>
<div v-if="recordindex == 1">
<p v-html="categoryItem.outHospitalInfo"></p>
</div>
<div v-if="recordindex == 2">
<p v-html="categoryItem.surgicalRecord"></p>
</div>
<div v-if="recordindex == 3">
<p v-html="categoryItem.inHospitalInfo"></p>
</div>
</div>
<div class="header">
<div class="leftheader">
<div class="time">
<el-date-picker
v-model="visitDate"
type="daterange"
range-separator="至"
start-placeholder="开始日期"
value-format="yyyy-MM-dd"
:picker-options="pickerOptions"
end-placeholder="结束日期"
style="width: 95%"
>
</el-date-picker>
</div>
<div class="list">
<div
class="item"
v-for="(item, index) in categorylist"
:key="item.id"
@click="clickcategory(item, index)"
:class="
item.visitMethod == 'BE_IN_HOSPITAL' && index == categoryindex
? 'zyitem'
: item.visitMethod == 'OUTPATIENT_SERVICE' &&
index == categoryindex
? 'mzitem'
: ''
"
>
<div class="time">{{ item.visitDate }}</div>
<div class="name">
{{ item.visitName }}
</div>
<div class="text">
<span>
{{ item.visitDept }}
</span>
<span style="margin-left: 10px">
{{ item.createBy }}
</span>
</div>
<el-tag
v-if="item.visitMethod == 'BE_IN_HOSPITAL'"
class="type"
size="mini"
>住院</el-tag
>
<el-tag
v-if="item.visitMethod == 'OUTPATIENT_SERVICE'"
class="type"
size="mini"
type="success"
>门诊</el-tag
>
</div>
</div>
</div>
<div class="rightheader">
<div
class="toptitle"
v-if="categoryItem && categoryItem.visitMethod == 'BE_IN_HOSPITAL'"
>
<div
style="border-radius: 10px 0 0 10px"
:class="recordindex == 0 ? 'zyclass' : ''"
@click="clickrecord(0)"
>
入院记录
</div>
<div
class="centerdiv"
:class="recordindex == 1 ? 'zyclass' : ''"
@click="clickrecord(1)"
>
出院记录
</div>
<div
style="border-radius: 0 10px 10px 0"
:class="recordindex == 2 ? 'zyclass' : ''"
@click="clickrecord(2)"
>
手术记录
</div>
</div>
<div
class="toptitle"
v-if="categoryItem && categoryItem.visitMethod == 'OUTPATIENT_SERVICE'"
>
<div
style="border-radius: 10px"
:class="recordindex == 3 ? 'mzclass' : ''"
@click="clickrecord(3)"
>
门诊记录
</div>
</div>
<div class="righttext" v-if="categoryItem">
<div v-if="recordindex == 0">
<p v-html="categoryItem.inHospitalInfo"></p>
</div>
<div v-if="recordindex == 1">
<p v-html="categoryItem.outHospitalInfo"></p>
</div>
<div v-if="recordindex == 2">
<p v-html="categoryItem.surgicalRecord"></p>
</div>
<div v-if="recordindex == 3">
<p v-html="categoryItem.inHospitalInfo"></p>
</div>
</div>
</div>
</div>
</template>
<script>
import {
getList,
InRecord,
OutRecord,
OperationRecord
getList,
InRecord,
OutRecord,
OperationRecord
} from '@/api/manage/visitRecords'
export default {
name: "visitRecords",
data() {
return {
pickerOptions: {
disabledDate(time) {
return time.getTime() > Date.now(); //
},
},
visitDate: [],
//
recordindex: undefined,
//
categoryindex: undefined,
//item
categoryItem: undefined,
//list
categorylist: [],
//list
recordlist: undefined,
//query
query: {
patientId: undefined,
//
visitDateStart: "",
visitDateEnd: "",
},
};
name: "visitRecords",
data() {
return {
pickerOptions: {
disabledDate(time) {
return time.getTime() > Date.now(); //
},
},
visitDate: [],
//
recordindex: undefined,
//
categoryindex: undefined,
//item
categoryItem: undefined,
//list
categorylist: [],
//list
recordlist: undefined,
//query
query: {
patientId: undefined,
//
visitDateStart: "",
visitDateEnd: "",
},
};
},
watch: {
'visitDate': {
handler(newValue, oldValue) {
this.query.visitDateStart = newValue[0]
this.query.visitDateEnd = newValue[1]
this.getListinfo();
},
deep: true,
},
watch: {
'visitDate': {
handler(newValue, oldValue) {
this.query.visitDateStart = newValue[0]
this.query.visitDateEnd = newValue[1]
this.getListinfo();
},
deep: true,
},
},
created() {
this.info();
},
methods: {
//
clickrecord(index) {
this.recordindex = index
},
created() {
this.info();
//item
clickcategory(item, index) {
this.categoryindex = index
this.categoryItem = item
if (item.visitMethod == 'BE_IN_HOSPITAL') {
this.recordindex = 0
} else if (item.visitMethod == 'OUTPATIENT_SERVICE') {
this.recordindex = 3
}
},
methods: {
//
clickrecord(index) {
this.recordindex = index
},
//item
clickcategory(item, index) {
this.categoryindex = index
this.categoryItem = item
if (item.visitMethod == 'BE_IN_HOSPITAL') {
this.recordindex = 0
} else if (item.visitMethod == 'OUTPATIENT_SERVICE') {
this.recordindex = 3
}
},
//list
getListinfo() {
getList(this.query).then(res => {
if (res.data.length > 0) {
this.categorylist = res.data
this.clickcategory(res.data[0], 0)
}
})
},
//info
info() {
var date = new Date();
var seperator1 = "-";
var year = date.getFullYear();
var month = date.getMonth() + 1;
var strDate = date.getDate();
if (month >= 1 && month <= 9) {
month = "0" + month;
}
if (strDate >= 0 && strDate <= 9) {
strDate = "0" + strDate;
}
this.query.visitDateStart = this.haflYear();
this.visitDate = [this.haflYear(), year + seperator1 + month + seperator1 + strDate]
this.query.visitDateEnd = year + seperator1 + month + seperator1 + strDate
this.query.patientId = this.$route.query.patientId
this.getListinfo();
},
haflYear() {
//
var curDate = (new Date()).getTime()
//
var halfYear = 365 / 2 * 24 * 3600 * 1000
//
var pastResult = curDate - halfYear
//
var pastDate = new Date(pastResult)
var pastYear = pastDate.getFullYear()
var pastMonth = pastDate.getMonth() + 1
var pastDay = pastDate.getDate()
if (pastMonth >= 1 && pastMonth <= 9) {
pastMonth = '0' + pastMonth
}
if (pastDay >= 0 && pastDay <= 9) {
pastDay = '0' + pastDay
}
var endDate = pastYear + '-' + pastMonth + '-' + pastDay
return endDate
//list
getListinfo() {
getList(this.query).then(res => {
if (res.data.length > 0) {
this.categorylist = res.data
this.clickcategory(res.data[0], 0)
}
})
},
//info
info() {
var date = new Date();
var seperator1 = "-";
var year = date.getFullYear();
var month = date.getMonth() + 1;
var strDate = date.getDate();
if (month >= 1 && month <= 9) {
month = "0" + month;
}
if (strDate >= 0 && strDate <= 9) {
strDate = "0" + strDate;
}
this.query.visitDateStart = this.haflYear();
this.visitDate = [this.haflYear(), year + seperator1 + month + seperator1 + strDate]
this.query.visitDateEnd = year + seperator1 + month + seperator1 + strDate
this.query.patientId = this.$route.query.patientId
this.getListinfo();
},
haflYear() {
//
var curDate = (new Date()).getTime()
//
var halfYear = 365 / 2 * 24 * 3600 * 1000
//
var pastResult = curDate - halfYear
//
var pastDate = new Date(pastResult)
var pastYear = pastDate.getFullYear()
var pastMonth = pastDate.getMonth() + 1
var pastDay = pastDate.getDate()
if (pastMonth >= 1 && pastMonth <= 9) {
pastMonth = '0' + pastMonth
}
if (pastDay >= 0 && pastDay <= 9) {
pastDay = '0' + pastDay
}
var endDate = pastYear + '-' + pastMonth + '-' + pastDay
return endDate
}
}
};
</script>
<style lang="scss" scoped>
.header {
background-color: #fff !important;
padding: 0 !important;
display: flex;
height: calc(100vh - 84px);
.rightheader {
width: 75%;
padding-top: 20px;
border-left: 3px solid #DFE4ED;
background-color: #fff !important;
padding: 0 !important;
display: flex;
.righttext {
width: 100%;
padding-left: 20px;
height: 450px;
overflow: scroll;
//
overflow-x: hidden !important;
}
.rightheader {
width: 75%;
padding-top: 20px;
border-left: 3px solid #dfe4ed;
.toptitle {
display: flex;
margin-left: 20px;
.zyclass {
color: #1890ff !important;
border: 2px solid #1890ff !important;
}
.mzclass {
color: #009982 !important;
border: 2px solid #009982 !important;
}
div {
width: 80px;
font-size: 14px;
line-height: 36px;
text-align: center;
height: 36px;
border: 1.5px solid #CCCCCC;
}
.centerdiv {
border-left: none;
border-right: none
}
}
.righttext {
width: 100%;
padding-left: 20px;
// height: 450px;
overflow: auto;
//
overflow-x: hidden !important;
}
.leftheader {
margin-top: 20px;
width: 25%;
.toptitle {
display: flex;
margin-left: 20px;
.list {
margin-top: 20px;
height: 450px;
overflow: scroll;
//
overflow-x: hidden !important;
width: 96%;
.zyclass {
color: #1890ff !important;
border: 2px solid #1890ff !important;
}
.zyitem {
background-color: #D2E9FC;
border-left: 2px solid #1890ff !important;
border-bottom: 1px solid #fff !important;
}
.mzclass {
color: #009982 !important;
border: 2px solid #009982 !important;
}
.mzitem {
background-color: #EBF7F5;
border-left: 2px solid #009982 !important;
border-bottom: 1px solid #fff !important;
}
div {
width: 80px;
font-size: 14px;
line-height: 36px;
text-align: center;
height: 36px;
border: 1.5px solid #cccccc;
}
.item {
height: 120px;
padding: 25px 10px;
position: relative;
border-left: 2px solid #fff;
border-bottom: 1px solid #E7E7E7;
.type {
position: absolute;
right: 10px;
top: 20px;
font-size: 12px;
}
.text {
height: 20px;
line-height: 20px;
font-size: 12px;
color: #999999;
}
.name {
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
height: 30px;
line-height: 30px;
font-size: 18px;
font-weight: 600;
}
.time {
line-height: 20px;
height: 20px;
font-size: 14px;
}
}
}
.centerdiv {
border-left: none;
border-right: none;
}
}
}
.leftheader {
height: calc(100vh - 352px);
margin-top: 20px;
width: 25%;
.list {
height: calc(100vh - 352px);
margin-top: 20px;
// height: 450px;
overflow: auto;
//
overflow-x: hidden !important;
width: 96%;
.zyitem {
background-color: #d2e9fc;
border-left: 2px solid #1890ff !important;
border-bottom: 1px solid #fff !important;
}
.mzitem {
background-color: #ebf7f5;
border-left: 2px solid #009982 !important;
border-bottom: 1px solid #fff !important;
}
.item {
height: 120px;
padding: 25px 10px;
position: relative;
border-left: 2px solid #fff;
border-bottom: 1px solid #e7e7e7;
.type {
position: absolute;
right: 10px;
top: 20px;
font-size: 12px;
}
.text {
height: 20px;
line-height: 20px;
font-size: 12px;
color: #999999;
}
.name {
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
height: 30px;
line-height: 30px;
font-size: 18px;
font-weight: 600;
}
.time {
line-height: 20px;
height: 20px;
font-size: 14px;
}
}
}
}
}
</style>

View File

@ -406,6 +406,7 @@ export default {
}
.header {
overflow: auto;
background-color: #fff;
width: 78%;
border-radius: 0 8px 8px 0;

View File

@ -214,7 +214,7 @@
<template slot-scope="scope">
<el-button size="mini" type="text" @click="handleAuthRole(scope.row)"
v-if="queryParams.serviceStatus == 'SERVICE_CENTER' || queryParams.serviceStatus == 'SERVICE_END'">详情</el-button>
<el-button size="mini" type="text" @click="handledata(scope.row)">生成数据</el-button>
<!-- <el-button size="mini" type="text" @click="handledata(scope.row)">生成数据</el-button> -->
<el-button size="mini" type="text" @click="handleDelete(scope.row)"
v-if="queryParams.serviceStatus == 'SERVICE_CENTER'">取消签约</el-button>
<el-button size="mini" type="text" @click="handleContinue(scope.row)"

View File

@ -690,6 +690,8 @@ export default {
.header {
background-color: #f1f3f5;
padding-top: 10px;
height: calc(100vh - 84px);
::v-deep .el-tabs__header {
margin: 0 !important;
@ -700,9 +702,9 @@ export default {
}
.bottomheader {
overflow-y: scroll;
height: calc(100vh - 294px);
overflow-y: auto;
width: 99%;
height: 67vh;
background-color: #fff;
margin: 10px auto;
padding: 10px 20px;