|
@@ -1,14 +1,25 @@
|
|
<template>
|
|
<template>
|
|
|
|
|
|
-<div>
|
|
|
|
- <el-tabs v-model="tabsActive">
|
|
|
|
|
|
+<div class="CaseQualityBox2">
|
|
|
|
+ <el-row style="padding: 10px;line-height: 20px;" type="flex" justify="space-between">
|
|
|
|
+ <span>病案号:{{mainHomeData.AAA28}}</span>
|
|
|
|
+ <span>床号:暂无</span>
|
|
|
|
+ <span>住院次数:{{mainHomeData.AAA29}}</span>
|
|
|
|
+ </el-row>
|
|
|
|
+ <el-tabs v-model="tabsActive" style="padding: 0 10px;background-color: #fff;">
|
|
<el-tab-pane v-for="(item, index) in tabsArray" :key="index" :label="item.label" :name="item.name" >
|
|
<el-tab-pane v-for="(item, index) in tabsArray" :key="index" :label="item.label" :name="item.name" >
|
|
</el-tab-pane>
|
|
</el-tab-pane>
|
|
</el-tabs>
|
|
</el-tabs>
|
|
|
|
|
|
- <div v-if="tabsActive == 1" style="height: 100%">
|
|
|
|
- <div class="taskNameListAndMessage">
|
|
|
|
- <el-menu
|
|
|
|
|
|
+ <div v-if="tabsActive == 1" class="tabContent">
|
|
|
|
+ <div
|
|
|
|
+ class="taskNameListAndMessage"
|
|
|
|
+ :style="{
|
|
|
|
+ width: currentTaskName ? '840px' : '340px'
|
|
|
|
+ }"
|
|
|
|
+ >
|
|
|
|
+ <el-menu
|
|
|
|
+ v-if="showTaskNameMenu"
|
|
:default-active="currentTaskName"
|
|
:default-active="currentTaskName"
|
|
class="el-menu-vertical-demo"
|
|
class="el-menu-vertical-demo"
|
|
:style="{
|
|
:style="{
|
|
@@ -65,9 +76,12 @@
|
|
</div> -->
|
|
</div> -->
|
|
<div style="width: calc(100%)">
|
|
<div style="width: calc(100%)">
|
|
<textarea class="inputText" v-model="inputMessage" placeholder="请输入您的问题,帮您深度解答"></textarea>
|
|
<textarea class="inputText" v-model="inputMessage" placeholder="请输入您的问题,帮您深度解答"></textarea>
|
|
- <el-row type="flex" justify="end">
|
|
|
|
|
|
+ <el-row type="flex" justify="space-between" align="middle">
|
|
<!-- <el-icon class="iconfont zj-damuzhi" style="margin-left: 20px;line-height: 35px;"></el-icon>
|
|
<!-- <el-icon class="iconfont zj-damuzhi" style="margin-left: 20px;line-height: 35px;"></el-icon>
|
|
<el-icon class="iconfont zj-zanxia" style="margin-left: 20px;line-height: 35px;"></el-icon> -->
|
|
<el-icon class="iconfont zj-zanxia" style="margin-left: 20px;line-height: 35px;"></el-icon> -->
|
|
|
|
+ <!-- <el-button type="primary" @click="sendMessage()" icon="el-icon-top" circle> -->
|
|
|
|
+ <div @click="showTaskNameMenu = !showTaskNameMenu"><Hamburger/></div>
|
|
|
|
+ <!-- </el-button> -->
|
|
<el-button type="primary" @click="sendMessage()" icon="el-icon-top" circle></el-button>
|
|
<el-button type="primary" @click="sendMessage()" icon="el-icon-top" circle></el-button>
|
|
</el-row>
|
|
</el-row>
|
|
</div>
|
|
</div>
|
|
@@ -77,7 +91,7 @@
|
|
</div>
|
|
</div>
|
|
|
|
|
|
<!--病案首页-->
|
|
<!--病案首页-->
|
|
- <div v-else-if="tabsActive == 3">
|
|
|
|
|
|
+ <div v-else-if="tabsActive == 3" class="tabContent">
|
|
<div ref="box" class="box22" :style="{width: width ? width + 'px' : '100%'}" :class="{'nocopy': $route.meta.nocopy}">
|
|
<div ref="box" class="box22" :style="{width: width ? width + 'px' : '100%'}" :class="{'nocopy': $route.meta.nocopy}">
|
|
|
|
|
|
<div class="score-box" :class="scoreLevel == '甲'? 'scoreLevel_1' : ( scoreLevel == '乙'?'scoreLevel_2': (scoreLevel == '丙'?'scoreLevel_3':'' ) ) ">
|
|
<div class="score-box" :class="scoreLevel == '甲'? 'scoreLevel_1' : ( scoreLevel == '乙'?'scoreLevel_2': (scoreLevel == '丙'?'scoreLevel_3':'' ) ) ">
|
|
@@ -96,7 +110,7 @@
|
|
</div>
|
|
</div>
|
|
|
|
|
|
|
|
|
|
- <el-scrollbar ref="scrollRef" class="scrollBox" :style="`height: ${scrollHeight};padding-bottom:60px;`">
|
|
|
|
|
|
+ <el-scrollbar ref="scrollRef" class="scrollBox" :style="`height: ${scrollHeight}`">
|
|
<template v-for="(item, index) in tableData">
|
|
<template v-for="(item, index) in tableData">
|
|
<!-- is_appeal: 是否申述 -->
|
|
<!-- is_appeal: 是否申述 -->
|
|
<div class="list-box box-card" :key="index" v-if="is_show && (!item.is_appeal || (item.is_appeal == 1 && item.appeal_status == 2))">
|
|
<div class="list-box box-card" :key="index" v-if="is_show && (!item.is_appeal || (item.is_appeal == 1 && item.appeal_status == 2))">
|
|
@@ -162,7 +176,11 @@
|
|
</template>
|
|
</template>
|
|
|
|
|
|
<script>
|
|
<script>
|
|
|
|
+import Hamburger from '@/components/Hamburger';
|
|
export default {
|
|
export default {
|
|
|
|
+ components: {
|
|
|
|
+ Hamburger
|
|
|
|
+ },
|
|
props: {
|
|
props: {
|
|
data: {
|
|
data: {
|
|
type: Object,
|
|
type: Object,
|
|
@@ -172,6 +190,14 @@
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
},
|
|
|
|
+ mainHomeData: {
|
|
|
|
+ type: Object,
|
|
|
|
+ default() {
|
|
|
|
+ return {
|
|
|
|
+ data: {}
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ },
|
|
type:{
|
|
type:{
|
|
type: String,
|
|
type: String,
|
|
default() {
|
|
default() {
|
|
@@ -203,16 +229,18 @@
|
|
chatMessages:[],//内容显示
|
|
chatMessages:[],//内容显示
|
|
tabsActive:'3',//tabs选择
|
|
tabsActive:'3',//tabs选择
|
|
tabsArray:[
|
|
tabsArray:[
|
|
|
|
+ {'name':'3','label':'质控结果'},
|
|
{'name':'1','label':'病历生成'},
|
|
{'name':'1','label':'病历生成'},
|
|
- {'name':'2','label':'病案首页'},
|
|
|
|
- {'name':'3','label':'住院病历'},
|
|
|
|
- {'name':'4','label':'编目首页'},
|
|
|
|
|
|
+ // {'name':'2','label':'病案首页'},
|
|
|
|
+
|
|
|
|
+ // {'name':'4','label':'编目首页'},
|
|
],
|
|
],
|
|
tableData: [],
|
|
tableData: [],
|
|
is_show: true,
|
|
is_show: true,
|
|
quality_type: 2, // 1、首页质控 2、病例质控
|
|
quality_type: 2, // 1、首页质控 2、病例质控
|
|
taskNameList: [],
|
|
taskNameList: [],
|
|
- currentTaskName: ''
|
|
|
|
|
|
+ currentTaskName: '',
|
|
|
|
+ showTaskNameMenu: true
|
|
}
|
|
}
|
|
},
|
|
},
|
|
computed: {
|
|
computed: {
|
|
@@ -264,7 +292,7 @@
|
|
this.sendMessage(res.data)
|
|
this.sendMessage(res.data)
|
|
}
|
|
}
|
|
})
|
|
})
|
|
-
|
|
|
|
|
|
+ window.electronAPI.middle()
|
|
},
|
|
},
|
|
//发送消息
|
|
//发送消息
|
|
async sendMessage(params){
|
|
async sendMessage(params){
|
|
@@ -278,6 +306,17 @@
|
|
|
|
|
|
// 清空输入框
|
|
// 清空输入框
|
|
this.inputMessage = '';
|
|
this.inputMessage = '';
|
|
|
|
+ // this.$axios.post('/predict', {
|
|
|
|
+ // query: messages
|
|
|
|
+ // }).then(res => {
|
|
|
|
+ // if(res.code == 200){
|
|
|
|
+ // // 添加模型响应消息到聊天记录
|
|
|
|
+ // this.chatMessages.push({
|
|
|
|
+ // role: 'assistant',
|
|
|
|
+ // content: res.data
|
|
|
|
+ // });
|
|
|
|
+ // }
|
|
|
|
+ // })
|
|
|
|
|
|
//大模型请求
|
|
//大模型请求
|
|
const modelResponse = await this.simulateModelResponse(messages);
|
|
const modelResponse = await this.simulateModelResponse(messages);
|
|
@@ -382,6 +421,12 @@
|
|
</script>
|
|
</script>
|
|
|
|
|
|
<style lang="scss" scoped>
|
|
<style lang="scss" scoped>
|
|
|
|
+.CaseQualityBox2 {
|
|
|
|
+ height: 100%;
|
|
|
|
+ .tabContent {
|
|
|
|
+ height: calc(100% - 94px);
|
|
|
|
+ }
|
|
|
|
+}
|
|
::v-deep.el-submenu {
|
|
::v-deep.el-submenu {
|
|
&>.el-submenu__title {
|
|
&>.el-submenu__title {
|
|
padding-left: 0 !important;
|
|
padding-left: 0 !important;
|
|
@@ -400,14 +445,15 @@
|
|
.el-menu-vertical-demo {
|
|
.el-menu-vertical-demo {
|
|
// width:340px;
|
|
// width:340px;
|
|
height: 100%;
|
|
height: 100%;
|
|
- overflow-y: scroll
|
|
|
|
|
|
+ overflow-y: scroll;
|
|
|
|
+ width: 230px;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
.messageBox {
|
|
.messageBox {
|
|
- width: 450px;
|
|
|
|
|
|
+ flex: 1;
|
|
display: flex;
|
|
display: flex;
|
|
flex-direction: column;
|
|
flex-direction: column;
|
|
- height: calc(100vh - 250px);
|
|
|
|
|
|
+ height: 100%;
|
|
|
|
|
|
.message {
|
|
.message {
|
|
flex: 1;
|
|
flex: 1;
|
|
@@ -427,6 +473,7 @@
|
|
margin-right: 10px;
|
|
margin-right: 10px;
|
|
border-radius: 5px;
|
|
border-radius: 5px;
|
|
padding: 0 10px 0 10px;
|
|
padding: 0 10px 0 10px;
|
|
|
|
+ flex: 1
|
|
}
|
|
}
|
|
}
|
|
}
|
|
.record-message {
|
|
.record-message {
|
|
@@ -439,6 +486,7 @@
|
|
padding: 0 10px 0 10px;
|
|
padding: 0 10px 0 10px;
|
|
border-radius: 5px;
|
|
border-radius: 5px;
|
|
line-height: 40px;
|
|
line-height: 40px;
|
|
|
|
+ flex: 1
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
@@ -471,10 +519,13 @@
|
|
|
|
|
|
|
|
|
|
.box22 {
|
|
.box22 {
|
|
- padding: 16px;
|
|
|
|
|
|
+ padding: 0 10px;
|
|
background: #FFFFFF;
|
|
background: #FFFFFF;
|
|
border-radius: 5px;
|
|
border-radius: 5px;
|
|
- height: 100vh;
|
|
|
|
|
|
+ height: 100%;
|
|
|
|
+ overflow-y: scroll;
|
|
|
|
+ display: flex;
|
|
|
|
+ flex-direction: column;
|
|
.score-box{
|
|
.score-box{
|
|
width: 100%;
|
|
width: 100%;
|
|
margin-bottom: 16px;
|
|
margin-bottom: 16px;
|