dev
This commit is contained in:
parent
99e7985ab9
commit
8b78c320b1
|
|
@ -18,7 +18,7 @@ $border-color-extra-light: #F2F6FC;
|
||||||
|
|
||||||
// 背景颜色
|
// 背景颜色
|
||||||
$background-color-base: #eee;
|
$background-color-base: #eee;
|
||||||
$background-color-main: #5078c8;
|
$background-color-main: #4D6DE4;
|
||||||
|
|
||||||
// 边框圆角
|
// 边框圆角
|
||||||
$border-radius-base: 4px;
|
$border-radius-base: 4px;
|
||||||
|
|
|
||||||
|
|
@ -70,7 +70,7 @@ import {CaretBottom} from "@element-plus/icons-vue";
|
||||||
import {apiConfig} from "@/assets/config/apiConfig.ts";
|
import {apiConfig} from "@/assets/config/apiConfig.ts";
|
||||||
|
|
||||||
const curItem = ref<any>({});
|
const curItem = ref<any>({});
|
||||||
const emit = defineEmits(['clickItem'])
|
const emit = defineEmits(['clickItem','getStatus'])
|
||||||
const clickItem = (item: any) => {
|
const clickItem = (item: any) => {
|
||||||
curItem.value = item
|
curItem.value = item
|
||||||
emit('clickItem', item, query.value.status);
|
emit('clickItem', item, query.value.status);
|
||||||
|
|
@ -141,6 +141,7 @@ const statusList = ref([
|
||||||
])
|
])
|
||||||
const tab = (item: any) => {
|
const tab = (item: any) => {
|
||||||
query.value.status = item.value
|
query.value.status = item.value
|
||||||
|
emit('getStatus', item.value)
|
||||||
init()
|
init()
|
||||||
}
|
}
|
||||||
const getTipCount = () => {
|
const getTipCount = () => {
|
||||||
|
|
|
||||||
|
|
@ -11,7 +11,7 @@
|
||||||
<div class="avatar-info-wrapper">
|
<div class="avatar-info-wrapper">
|
||||||
<div class="avatar-info">
|
<div class="avatar-info">
|
||||||
<span class="avatar-info-name">{{ seeDockerInfo?.patientInfo?.name }}</span>
|
<span class="avatar-info-name">{{ seeDockerInfo?.patientInfo?.name }}</span>
|
||||||
<span class="avatar-info-age">{{ seeDockerInfo?.patientInfo?.age}}</span>
|
<span class="avatar-info-age">{{ seeDockerInfo?.patientInfo?.age||0}}岁</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="avatar-info-phone-num">
|
<div class="avatar-info-phone-num">
|
||||||
<span class="avatar-info-phone">{{ seeDockerInfo?.patientInfo?.phone }}</span>
|
<span class="avatar-info-phone">{{ seeDockerInfo?.patientInfo?.phone }}</span>
|
||||||
|
|
@ -26,11 +26,11 @@
|
||||||
class="detail-doctor">{{ seeDockerInfo?.dockerName }}-{{ seeDockerInfo?.sectionName }}</span>
|
class="detail-doctor">{{ seeDockerInfo?.dockerName }}-{{ seeDockerInfo?.sectionName }}</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="detail-middle">
|
<div class="detail-middle">
|
||||||
<div>费用类别: <span class="detail-doctor">医保</span></div>
|
<div>费用类别: <span class="detail-doctor">{{seeDockerInfo?.feeTypeName||'-'}}</span></div>
|
||||||
<div>医保卡剩余金额: <span class="detail-balance">{{ seeDockerInfo?.socialBalance }}元</span></div>
|
<div>医保卡剩余金额: <span class="detail-balance">{{ seeDockerInfo?.socialBalance }}元</span></div>
|
||||||
</div>
|
</div>
|
||||||
<div>上次就诊时间: <span class="detail-doctor">{{
|
<div>上次就诊时间: <span class="detail-doctor">{{
|
||||||
formatDate(seeDockerInfo?.lastSeeDoctorTime)
|
formatDate(seeDockerInfo?.lastSeeDoctorTime)||'-'
|
||||||
}}</span></div>
|
}}</span></div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
||||||
|
|
@ -6,16 +6,9 @@
|
||||||
<el-collapse-item :name="index" v-for="(item, index) in list" :key="index">
|
<el-collapse-item :name="index" v-for="(item, index) in list" :key="index">
|
||||||
<template #title>
|
<template #title>
|
||||||
<div class="list-item-content">
|
<div class="list-item-content">
|
||||||
<el-tooltip
|
|
||||||
class="box-item"
|
|
||||||
effect="dark"
|
|
||||||
:content="item.diagnosisMedicalRecord?.diagnosisSummary"
|
|
||||||
placement="bottom-start"
|
|
||||||
>
|
|
||||||
<span class="disease-name">{{ item.diagnosisMedicalRecord?.diagnosisSummary }}</span>
|
<span class="disease-name">{{ item.diagnosisMedicalRecord?.diagnosisSummary }}</span>
|
||||||
</el-tooltip>
|
<span class="doctor">{{ item.doctorName }}</span>
|
||||||
<!-- <span class="doctor">{{ item.patientId }}</span>-->
|
<span class="time">{{ formatListTime(item.createTime) }}</span>
|
||||||
<!-- <span class="time">{{ item.createDatetime }}</span>-->
|
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
<div>
|
<div>
|
||||||
|
|
@ -32,9 +25,9 @@ import Panel from '@/components/common/Panel.vue';
|
||||||
import Detail from './RecordsLog/Detail.vue';
|
import Detail from './RecordsLog/Detail.vue';
|
||||||
import {post} from "@/utils/request.ts";
|
import {post} from "@/utils/request.ts";
|
||||||
import {ref} from "vue";
|
import {ref} from "vue";
|
||||||
|
import {formatListTime} from "@/utils/dateUtils.ts";
|
||||||
|
|
||||||
const list = ref<any>([])
|
const list = ref<any>([])
|
||||||
|
|
||||||
|
|
||||||
const init = (patientId: any) => {
|
const init = (patientId: any) => {
|
||||||
const query = {
|
const query = {
|
||||||
patientId: patientId,
|
patientId: patientId,
|
||||||
|
|
@ -42,6 +35,7 @@ const init = (patientId: any) => {
|
||||||
}
|
}
|
||||||
post('charge/listDetail', {query}).then((res: any) => {
|
post('charge/listDetail', {query}).then((res: any) => {
|
||||||
list.value = res.list
|
list.value = res.list
|
||||||
|
console.log(list,'list')
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
const clearList = () => {
|
const clearList = () => {
|
||||||
|
|
@ -61,14 +55,19 @@ defineExpose({init,clearList})
|
||||||
justify-content: space-between;
|
justify-content: space-between;
|
||||||
|
|
||||||
.disease-name {
|
.disease-name {
|
||||||
width: 135px;
|
width: 90px;
|
||||||
overflow: hidden; /* 隐藏溢出的内容 */
|
overflow: hidden; /* 隐藏溢出的内容 */
|
||||||
white-space: nowrap; /* 防止文本换行 */
|
white-space: nowrap; /* 防止文本换行 */
|
||||||
text-overflow: ellipsis; /* 显示省略号 */
|
text-overflow: ellipsis; /* 显示省略号 */
|
||||||
|
text-align: left;
|
||||||
}
|
}
|
||||||
|
|
||||||
.doctor {
|
.doctor {
|
||||||
width: 85px;
|
width: 80px;
|
||||||
|
}
|
||||||
|
.time{
|
||||||
|
display: inline-block;
|
||||||
|
overflow: hidden;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -44,10 +44,10 @@
|
||||||
</div>
|
</div>
|
||||||
<div class="content">
|
<div class="content">
|
||||||
<div class="content-middle">
|
<div class="content-middle">
|
||||||
<div class="item">
|
<div class="item" style="margin-top: 8px">
|
||||||
<div class="name">合计</div>
|
<div class="name">合计</div>
|
||||||
<div class="price">
|
<div class="price">
|
||||||
<div class="price-right">¥{{ sumPrice }}</div>
|
<div class="price-right sumPrice">¥{{ sumPrice }}</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
@ -143,6 +143,12 @@ onMounted(() => {
|
||||||
.price-left {
|
.price-left {
|
||||||
margin-right: 38px;
|
margin-right: 38px;
|
||||||
}
|
}
|
||||||
|
.sumPrice{
|
||||||
|
font-weight: bold;
|
||||||
|
font-size: 16px;
|
||||||
|
color: #FF0000;
|
||||||
|
font-style: normal;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -75,6 +75,7 @@ console.log(calendarData);
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
<div class="calendar-wrapper">
|
<div class="calendar-wrapper">
|
||||||
|
<span class="current">{{ currentYear }}年{{ currentMonth + 1 }}月</span>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="item">
|
<div class="item">
|
||||||
<span class="tip">日</span>
|
<span class="tip">日</span>
|
||||||
|
|
@ -97,15 +98,13 @@ console.log(calendarData);
|
||||||
<div class="item">
|
<div class="item">
|
||||||
<span class="tip">六</span>
|
<span class="tip">六</span>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
<div v-for="item in calendarData" class="row">
|
<div v-for="item in calendarData" class="row">
|
||||||
<div class="item" v-for="subItem in item">
|
<div class="item" v-for="subItem in item">
|
||||||
<span :class="subItem.isCurrentDay ? 'currentDay' : subItem.isCurrentMonth ? '' : 'otherMonth'">
|
<span :class="subItem.isCurrentDay ? 'currentDay' : subItem.isCurrentMonth ? '' : 'otherMonth'">
|
||||||
{{ subItem.day }}
|
{{ subItem.isCurrentDay ? "今" : subItem.day }}
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
@ -114,31 +113,51 @@ console.log(calendarData);
|
||||||
<style scoped lang="scss">
|
<style scoped lang="scss">
|
||||||
.calendar-wrapper {
|
.calendar-wrapper {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
height: 320px;
|
height: 100%;
|
||||||
box-sizing: border-box;
|
box-sizing: border-box;
|
||||||
padding: 20px;
|
padding:0 20px 20px;
|
||||||
background-color: #FFF;
|
background-color: #FFF;
|
||||||
|
border-radius: 0 0 8px 8px;
|
||||||
.row {
|
display: flex;
|
||||||
width: 100%;
|
flex-direction: column;
|
||||||
height: 45px;
|
.current{
|
||||||
|
font-weight: 500;
|
||||||
.item {
|
font-size: 18px;
|
||||||
|
color: #333333;
|
||||||
float: left;
|
font-style: normal;
|
||||||
width: 14.2%;
|
margin-bottom: 8px;
|
||||||
height: 45px;
|
}
|
||||||
|
.row {
|
||||||
span {
|
flex: 1;
|
||||||
display: block;
|
width: 100%;
|
||||||
margin: auto;
|
background: #F9FAFC ;
|
||||||
width: 30px;
|
padding: 0 20px;
|
||||||
height: 30px;
|
display: flex;
|
||||||
text-align: center;
|
justify-content: space-between;
|
||||||
line-height: 30px;
|
align-items: center;
|
||||||
border-radius: 15px;
|
font-weight: 500;
|
||||||
|
font-size: 14px;
|
||||||
|
color: #999999;
|
||||||
|
font-style: normal;
|
||||||
|
.item {
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
|
span {
|
||||||
|
margin: auto;
|
||||||
|
height: 34px;
|
||||||
|
width: 34px;
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
|
font-weight: bold;
|
||||||
|
font-size: 16px;
|
||||||
|
color: #666666;
|
||||||
|
font-style: normal;
|
||||||
|
border-radius:17px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.currentDay {
|
.currentDay {
|
||||||
background: #1677FE;
|
background: #1677FE;
|
||||||
color: #fff;
|
color: #fff;
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,10 @@
|
||||||
<template>
|
<template>
|
||||||
<header>
|
<header>
|
||||||
<div class="center-wrapper">
|
<div class="center-wrapper">
|
||||||
|
<div class="logo">
|
||||||
|
<img style="width: 62px;height: 46px;" src="/favicon.ico" alt=""/>
|
||||||
|
<span>药慧精灵</span>
|
||||||
|
</div>
|
||||||
<div class="menu">
|
<div class="menu">
|
||||||
<router-link to="/home" class="menu-item" active-class="active active1">首页</router-link>
|
<router-link to="/home" class="menu-item" active-class="active active1">首页</router-link>
|
||||||
<router-link to="/registration" class="menu-item" active-class="active active2">挂号</router-link>
|
<router-link to="/registration" class="menu-item" active-class="active active2">挂号</router-link>
|
||||||
|
|
@ -11,25 +15,28 @@
|
||||||
<router-link to="/social" class="menu-item" active-class="active active7">医保</router-link>
|
<router-link to="/social" class="menu-item" active-class="active active7">医保</router-link>
|
||||||
<router-link to="/statistics" class="menu-item" active-class="active active8">统计</router-link>
|
<router-link to="/statistics" class="menu-item" active-class="active active8">统计</router-link>
|
||||||
<router-link to="/settings" class="menu-item" active-class="active active9">设置</router-link>
|
<router-link to="/settings" class="menu-item" active-class="active active9">设置</router-link>
|
||||||
|
</div>
|
||||||
<div class="info">
|
<div class="info">
|
||||||
<span class="username">{{username}}</span>
|
<span class="username">{{ username }}</span>
|
||||||
<el-button class="hover" :icon="Right" style="color: #fff" @click="logout" text>退出登录</el-button>
|
<el-button class="hover" :icon="Right" style="color: #fff" @click="logout" text>退出登录</el-button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</header>
|
</header>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<style scoped lang="scss">
|
<style scoped lang="scss">
|
||||||
@use "@/assets/scss/base";
|
@use "@/assets/scss/base";
|
||||||
|
.center-wrapper{
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
|
||||||
.menu {
|
.menu {
|
||||||
position: relative;
|
position: relative;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
line-height: 50px;
|
|
||||||
|
|
||||||
.menu-item {
|
.menu-item {
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
color: #FFF;
|
color: #FFF;
|
||||||
|
|
@ -142,7 +149,6 @@ header {
|
||||||
position: relative;
|
position: relative;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
height: 80px;
|
height: 80px;
|
||||||
|
|
||||||
background-color: base.$background-color-main;
|
background-color: base.$background-color-main;
|
||||||
padding: 15px 0;
|
padding: 15px 0;
|
||||||
}
|
}
|
||||||
|
|
@ -153,19 +159,30 @@ header {
|
||||||
float: right;
|
float: right;
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center; // 垂直居中
|
align-items: center; // 垂直居中
|
||||||
.username{
|
.username {
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
height: 50px;
|
height: 50px;
|
||||||
line-height: 50px;
|
line-height: 50px;
|
||||||
}
|
}
|
||||||
.hover{
|
|
||||||
|
.hover {
|
||||||
margin-left: 10px;
|
margin-left: 10px;
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
&:hover{
|
|
||||||
|
&:hover {
|
||||||
color: #4d6de4 !important;
|
color: #4d6de4 !important;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
.logo{
|
||||||
|
margin-left: 30px;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
font-weight: 400;
|
||||||
|
font-size: 28px;
|
||||||
|
color: #FFFFFF;
|
||||||
|
font-style: normal;
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import {useRouter} from 'vue-router'
|
import {useRouter} from 'vue-router'
|
||||||
|
|
@ -173,7 +190,7 @@ import {type Action, ElMessage, ElMessageBox} from 'element-plus'
|
||||||
import {apiConfig} from "@/assets/config/apiConfig.ts";
|
import {apiConfig} from "@/assets/config/apiConfig.ts";
|
||||||
import {post} from "@/utils/request";
|
import {post} from "@/utils/request";
|
||||||
import {Right} from "@element-plus/icons-vue";
|
import {Right} from "@element-plus/icons-vue";
|
||||||
import {onMounted,ref} from "vue";
|
import {onMounted, ref} from "vue";
|
||||||
|
|
||||||
|
|
||||||
let logout = function () {
|
let logout = function () {
|
||||||
|
|
@ -200,13 +217,13 @@ let logout = function () {
|
||||||
useRouter().push("/")
|
useRouter().push("/")
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
onMounted(()=>{
|
onMounted(() => {
|
||||||
getInfo()
|
getInfo()
|
||||||
})
|
})
|
||||||
const username=ref<any>('')
|
const username = ref<any>('')
|
||||||
const getInfo=()=>{
|
const getInfo = () => {
|
||||||
post(apiConfig.managerUserVerify).then((res: any) => {
|
post(apiConfig.managerUserVerify).then((res: any) => {
|
||||||
username.value=res.username
|
username.value = res.username
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
|
||||||
|
|
@ -32,7 +32,8 @@
|
||||||
<PopoverInput :disabled="props.disabled" v-model="formDate.nowMedicalHistory" :list="nowMedicalHistoryList"/>
|
<PopoverInput :disabled="props.disabled" v-model="formDate.nowMedicalHistory" :list="nowMedicalHistoryList"/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="既往史:" v-if="!props.isShowFrom">
|
<el-form-item label="既往史:" v-if="!props.isShowFrom">
|
||||||
<PopoverInput :disabled="props.disabled" v-model="formDate.beforeMedicalHistory" :list="beforeMedicalHistoryList"/>
|
<PopoverInput :disabled="props.disabled" v-model="formDate.beforeMedicalHistory"
|
||||||
|
:list="beforeMedicalHistoryList"/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="过敏史:" v-if="!props.isShowFrom">
|
<el-form-item label="过敏史:" v-if="!props.isShowFrom">
|
||||||
<PopoverInput :disabled="props.disabled" v-model="formDate.allergyHistory" :list="allergyHistoryList"/>
|
<PopoverInput :disabled="props.disabled" v-model="formDate.allergyHistory" :list="allergyHistoryList"/>
|
||||||
|
|
@ -50,7 +51,8 @@
|
||||||
<el-input :disabled="props.disabled" v-model="formDate.mouthCheck"></el-input>
|
<el-input :disabled="props.disabled" v-model="formDate.mouthCheck"></el-input>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="辅助检查:" v-if="(modelType==2 || modelType ==0)&&!props.isShowFrom">
|
<el-form-item label="辅助检查:" v-if="(modelType==2 || modelType ==0)&&!props.isShowFrom">
|
||||||
<el-input style="height: 100%;width: 100%" :disabled="props.disabled" v-model="formDate.adjunctCheck"></el-input>
|
<el-input style="height: 100%;width: 100%" :disabled="props.disabled"
|
||||||
|
v-model="formDate.adjunctCheck"></el-input>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="处置:" v-if="(modelType==0 || modelType ==2)&&!props.isShowFrom">
|
<el-form-item label="处置:" v-if="(modelType==0 || modelType ==2)&&!props.isShowFrom">
|
||||||
<el-input style="height: 100%;width: 100%" :disabled="props.disabled" v-model="formDate.deal"></el-input>
|
<el-input style="height: 100%;width: 100%" :disabled="props.disabled" v-model="formDate.deal"></el-input>
|
||||||
|
|
@ -61,7 +63,7 @@
|
||||||
</Panel>
|
</Panel>
|
||||||
</template>
|
</template>
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import {computed, nextTick, ref,defineEmits} from "vue";
|
import {computed, nextTick, ref, defineEmits} from "vue";
|
||||||
import {
|
import {
|
||||||
mainAppealList,
|
mainAppealList,
|
||||||
nowMedicalHistoryList,
|
nowMedicalHistoryList,
|
||||||
|
|
@ -79,7 +81,7 @@ const props = defineProps({
|
||||||
type: Boolean,
|
type: Boolean,
|
||||||
default: 0
|
default: 0
|
||||||
},
|
},
|
||||||
isShowFrom:{
|
isShowFrom: {
|
||||||
type: Boolean,
|
type: Boolean,
|
||||||
default: false
|
default: false
|
||||||
}
|
}
|
||||||
|
|
@ -108,49 +110,53 @@ const diagnosisSelect = (list: any) => {
|
||||||
formDate.value.diagnosisDetail = JSON.stringify(list)
|
formDate.value.diagnosisDetail = JSON.stringify(list)
|
||||||
formDate.value.diagnosisSummary = diagnosisNames
|
formDate.value.diagnosisSummary = diagnosisNames
|
||||||
}
|
}
|
||||||
const diagnosisSearchRef= ref()
|
const diagnosisSearchRef = ref()
|
||||||
const initDiagnosisSearch = (list:any,nList:any)=>{
|
const initDiagnosisSearch = (list: any, nList: any) => {
|
||||||
nextTick(()=>{
|
nextTick(() => {
|
||||||
diagnosisSearchRef.value?.init(list,nList);
|
diagnosisSearchRef.value?.init(list, nList);
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
const emit = defineEmits(['focus'])
|
const emit = defineEmits(['focus'])
|
||||||
const focus = (e:any)=>{
|
const focus = (e: any) => {
|
||||||
emit('focus',e)
|
emit('focus', e)
|
||||||
}
|
}
|
||||||
const clearDiagnosis = ()=>{
|
const clearDiagnosis = () => {
|
||||||
diagnosisSearchRef.value?.clear()
|
diagnosisSearchRef.value?.clear()
|
||||||
}
|
}
|
||||||
|
|
||||||
defineExpose({initDiagnosisSearch,clearDiagnosis})
|
defineExpose({initDiagnosisSearch, clearDiagnosis})
|
||||||
</script>
|
</script>
|
||||||
<style scoped lang="scss">
|
<style scoped lang="scss">
|
||||||
.content {
|
.content {
|
||||||
display: flex;
|
display: flex;
|
||||||
|
|
||||||
.model-selector {
|
.model-selector {
|
||||||
width: 100px;
|
width: 100px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.container {
|
.container {
|
||||||
margin:0 24px;
|
margin: 0 24px;
|
||||||
}
|
}
|
||||||
:deep(.el-form-item){
|
|
||||||
|
:deep(.el-form-item) {
|
||||||
margin-bottom: 0;
|
margin-bottom: 0;
|
||||||
|
|
||||||
}
|
}
|
||||||
:deep(.el-form-item__label){
|
|
||||||
|
:deep(.el-form-item__label) {
|
||||||
height: 42px;
|
height: 42px;
|
||||||
line-height: 42px;
|
line-height: 42px;
|
||||||
}
|
}
|
||||||
:deep(.el-input__wrapper){
|
|
||||||
|
:deep(.el-input__wrapper) {
|
||||||
border-radius: 0;
|
border-radius: 0;
|
||||||
height: 42px;
|
height: 42px;
|
||||||
background: #FFFFFF;
|
background: #FFFFFF;
|
||||||
&:nth-child(2n){
|
border: 1px solid #EAEAEC;
|
||||||
border-top: none;
|
box-shadow: 0 0 0 0 var(--el-input-border-color, var(--el-border-color)) inset;
|
||||||
border-bottom: none;
|
}
|
||||||
}
|
:deep(.is-disabled .el-input__wrapper){
|
||||||
|
box-shadow: 0 0 0 0 var(--el-input-border-color, var(--el-border-color)) inset;
|
||||||
}
|
}
|
||||||
|
|
||||||
</style>
|
</style>
|
||||||
|
|
@ -25,7 +25,7 @@ import Panel from '@/components/common/Panel.vue';
|
||||||
import DiseaseDetails from './DiseaseDetails.vue';
|
import DiseaseDetails from './DiseaseDetails.vue';
|
||||||
import {post} from "@/utils/request.ts";
|
import {post} from "@/utils/request.ts";
|
||||||
import {ref} from "vue";
|
import {ref} from "vue";
|
||||||
import {formatListTime} from "../../utils/dateUtils.ts";
|
import {formatListTime} from "@/utils/dateUtils.ts";
|
||||||
const list = ref<any>([])
|
const list = ref<any>([])
|
||||||
const init = (patientId: any) => {
|
const init = (patientId: any) => {
|
||||||
post("medical/record/listByPatient",{patientId:patientId}).then((res: any) => {
|
post("medical/record/listByPatient",{patientId:patientId}).then((res: any) => {
|
||||||
|
|
|
||||||
|
|
@ -30,11 +30,9 @@ export const formatListTime = (date: any) => {
|
||||||
} else if (typeof date === 'string') {
|
} else if (typeof date === 'string') {
|
||||||
dateDetail = new Date(date);
|
dateDetail = new Date(date);
|
||||||
if (isNaN(dateDetail.getTime())) {
|
if (isNaN(dateDetail.getTime())) {
|
||||||
console.error(`Invalid date string: ${date}`);
|
|
||||||
return '-';
|
return '-';
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
console.error(`Invalid date type: ${typeof date}`);
|
|
||||||
return '-';
|
return '-';
|
||||||
}
|
}
|
||||||
const year = dateDetail.getFullYear();
|
const year = dateDetail.getFullYear();
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
<template xmlns="http://www.w3.org/1999/html">
|
<template xmlns="http://www.w3.org/1999/html">
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<div class="left">
|
<div class="left">
|
||||||
<chargeQueue @clickItem="clickItem" ref="chargeQueueRef"></ChargeQueue>
|
<chargeQueue @clickItem="clickItem" @getStatus="getStatus" ref="chargeQueueRef"></ChargeQueue>
|
||||||
</div>
|
</div>
|
||||||
<div class="middle">
|
<div class="middle">
|
||||||
<el-scrollbar>
|
<el-scrollbar>
|
||||||
|
|
@ -30,6 +30,7 @@
|
||||||
@change="handleChange"
|
@change="handleChange"
|
||||||
clearable
|
clearable
|
||||||
style="width: 100%"
|
style="width: 100%"
|
||||||
|
:disabled="statusDisabled == 1"
|
||||||
>
|
>
|
||||||
<el-option
|
<el-option
|
||||||
v-for="item in doctorList"
|
v-for="item in doctorList"
|
||||||
|
|
@ -45,15 +46,15 @@
|
||||||
</Panel>
|
</Panel>
|
||||||
</div>
|
</div>
|
||||||
<div style="margin-top: 24px">
|
<div style="margin-top: 24px">
|
||||||
<ServiceDetail v-model="formData.itemDetail" :status="formData.status == 0"
|
<ServiceDetail v-model="formData.itemDetail" :status="statusDisabled == 0"
|
||||||
@totalPriceChange="getOrderTotalPrice"></ServiceDetail>
|
@totalPriceChange="getOrderTotalPrice"></ServiceDetail>
|
||||||
</div>
|
</div>
|
||||||
<div style="margin-top: 24px">
|
<div style="margin-top: 24px">
|
||||||
<GoodsDetail v-model="formData.goodsDetail" :status="formData.status == 0"
|
<GoodsDetail v-model="formData.goodsDetail" :status="statusDisabled == 0"
|
||||||
@totalPriceChange="getOrderTotalPrice"></GoodsDetail>
|
@totalPriceChange="getOrderTotalPrice"></GoodsDetail>
|
||||||
</div>
|
</div>
|
||||||
<div class="bottom">
|
<div class="bottom">
|
||||||
<TotalPrice v-model="formData.totalPrice" @edit="saveAndCharge" :status="formData.status"></TotalPrice>
|
<TotalPrice v-model="formData.totalPrice" @edit="saveAndCharge" :status="statusDisabled==1"></TotalPrice>
|
||||||
</div>
|
</div>
|
||||||
</el-scrollbar>
|
</el-scrollbar>
|
||||||
</div>
|
</div>
|
||||||
|
|
@ -98,6 +99,7 @@ const formData = ref<any>({
|
||||||
diagnosisMedicalRecord: {},
|
diagnosisMedicalRecord: {},
|
||||||
goodsDetail: [],
|
goodsDetail: [],
|
||||||
itemDetail: [],
|
itemDetail: [],
|
||||||
|
patientRegistration: {}
|
||||||
})
|
})
|
||||||
const statusDisabled = ref(0)
|
const statusDisabled = ref(0)
|
||||||
const diagnosisKeyword = ref("")
|
const diagnosisKeyword = ref("")
|
||||||
|
|
@ -138,6 +140,7 @@ const patientCardRef = ref()
|
||||||
const clickItem = async (item: any, status: any) => {
|
const clickItem = async (item: any, status: any) => {
|
||||||
statusDisabled.value = status
|
statusDisabled.value = status
|
||||||
formData.value = await post('medical/record/getByDiagnosisCode', {diagnosisCode: item.code})
|
formData.value = await post('medical/record/getByDiagnosisCode', {diagnosisCode: item.code})
|
||||||
|
formData.value.doctorId = formData.value.patientRegistration.organizationDoctorId
|
||||||
getOrderTotalPrice()
|
getOrderTotalPrice()
|
||||||
nextTick(() => {
|
nextTick(() => {
|
||||||
let list = JSON.parse(formData.value.diagnosisMedicalRecord.diagnosisDetail)
|
let list = JSON.parse(formData.value.diagnosisMedicalRecord.diagnosisDetail)
|
||||||
|
|
@ -203,6 +206,9 @@ const list = () => {
|
||||||
doctorList.value = res
|
doctorList.value = res
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
const getStatus=(status:any)=>{
|
||||||
|
statusDisabled.value = status
|
||||||
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style scoped lang="scss">
|
<style scoped lang="scss">
|
||||||
|
|
@ -235,6 +241,7 @@ const list = () => {
|
||||||
margin-right: 24px;
|
margin-right: 24px;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.doctor {
|
.doctor {
|
||||||
width: 200px;
|
width: 200px;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -6,8 +6,8 @@
|
||||||
<div class="middle">
|
<div class="middle">
|
||||||
<el-scrollbar>
|
<el-scrollbar>
|
||||||
<div class="case">
|
<div class="case">
|
||||||
<CaseDetail v-if="patientRegistration.status==3" v-model="formData"></CaseDetail>
|
<!-- <CaseDetail v-if="patientRegistration.status==3" v-model="formData"></CaseDetail>-->
|
||||||
<Case ref="caseRef" v-else v-model="formData" :disabled="curRegister?.status !=2" :isShowFrom="isShowFrom"
|
<Case ref="caseRef" v-model="formData" :disabled="curRegister?.status !=2" :isShowFrom="isShowFrom"
|
||||||
@focus="focus"></Case>
|
@focus="focus"></Case>
|
||||||
</div>
|
</div>
|
||||||
<div class="service-items">
|
<div class="service-items">
|
||||||
|
|
@ -133,6 +133,7 @@ const clickItem = (item: any) => {
|
||||||
formData.value = res.diagnosisMedicalRecord
|
formData.value = res.diagnosisMedicalRecord
|
||||||
formData.value.goodsDetail = res.goodsDetail
|
formData.value.goodsDetail = res.goodsDetail
|
||||||
formData.value.itemDetail = res.itemDetail
|
formData.value.itemDetail = res.itemDetail
|
||||||
|
formData.value.diagType = Number(formData.value.diagType)
|
||||||
patientRegistration.value = res.patientRegistration
|
patientRegistration.value = res.patientRegistration
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -9,18 +9,24 @@
|
||||||
</div>
|
</div>
|
||||||
<div class="left-bottom">
|
<div class="left-bottom">
|
||||||
<Panel title="医生列表">
|
<Panel title="医生列表">
|
||||||
<div class="search" style="padding: 0 24px">
|
<div class="search" style="padding: 0 24px ;height: 42px">
|
||||||
<el-input v-model="keyword" placeholder="搜索医生"
|
<el-input style="height: 100%" v-model="keyword" placeholder="搜索医生姓名"
|
||||||
@keydown.enter="initDoctor"></el-input>
|
@keydown.enter="initDoctor" :prefix-icon="Search"></el-input>
|
||||||
</div>
|
</div>
|
||||||
<div class="content_list" style="padding: 0 24px">
|
<div class="content_list" style="padding: 0 24px">
|
||||||
<div class="role_list">
|
<div class="role_list">
|
||||||
<ul>
|
<ul>
|
||||||
<li v-for="(item, index) in roleList" :key="index"
|
<li v-for="(item, index) in roleList" :key="index"
|
||||||
@click="openDialog(item,index)" :class="{active:isShowNum==index}" >
|
:class="{active:isShowNum==index}">
|
||||||
<span class="name">{{ item.name }}</span>
|
<span class="name">{{ item.name }}</span>
|
||||||
<span class="section_name">{{ item.sectionNames }}</span>
|
<span class="section_name">{{ item.sectionNames }}</span>
|
||||||
<span class="btn">挂号</span>
|
<span class="btn" @click="openDialog(item,index)"
|
||||||
|
@mouseover="isShowNum = index"
|
||||||
|
@mouseleave="isShowNum = -1">
|
||||||
|
<img v-if="isShowNum==index" src="/static/images/registration/3-active.png" style="width: 15px;height: 14px;margin-right: 8px" alt="">
|
||||||
|
<img v-else src="/static/images/registration/3.png" alt="" style="width: 15px;height: 14px;margin-right: 8px">
|
||||||
|
挂号
|
||||||
|
</span>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
|
|
@ -43,6 +49,10 @@
|
||||||
end-placeholder="结束时间"
|
end-placeholder="结束时间"
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="btn">
|
||||||
|
<el-button @click="reset">重置</el-button>
|
||||||
|
<el-button type="primary" @click="getPatientList">搜索</el-button>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="middle">
|
<div class="middle">
|
||||||
<List :patientList="patientList" @rowClick="rowClick"></List>
|
<List :patientList="patientList" @rowClick="rowClick"></List>
|
||||||
|
|
@ -77,6 +87,7 @@ import {getEndOfDay, getToday, formatDateArray} from "@/utils/dateUtils.ts";
|
||||||
import Calendar from "@/components/common/Calendar.vue";
|
import Calendar from "@/components/common/Calendar.vue";
|
||||||
import Panel from "@/components/common/Panel.vue";
|
import Panel from "@/components/common/Panel.vue";
|
||||||
import {apiConfig} from "@/assets/config/apiConfig.ts";
|
import {apiConfig} from "@/assets/config/apiConfig.ts";
|
||||||
|
import {Search} from "@element-plus/icons-vue";
|
||||||
|
|
||||||
const isShowNum = ref(-1)
|
const isShowNum = ref(-1)
|
||||||
const roleList = ref<any>([])
|
const roleList = ref<any>([])
|
||||||
|
|
@ -100,12 +111,13 @@ const patientList = ref<any>([])
|
||||||
const selectedDate = ref<any>([getToday().start, getToday().end])
|
const selectedDate = ref<any>([getToday().start, getToday().end])
|
||||||
const handleDateChange = (date: any[]) => {
|
const handleDateChange = (date: any[]) => {
|
||||||
selectedDate.value = formatDateArray(date)
|
selectedDate.value = formatDateArray(date)
|
||||||
if(selectedDate.value[0]==selectedDate.value[1]){
|
if (selectedDate.value[0] == selectedDate.value[1]) {
|
||||||
selectedDate.value[1] =getEndOfDay(selectedDate.value[1]); // 输出今天 23:59
|
selectedDate.value[1] = getEndOfDay(selectedDate.value[1]); // 输出今天 23:59
|
||||||
}
|
}
|
||||||
getPatientList()
|
getPatientList()
|
||||||
}
|
}
|
||||||
const getPatientList = () => {
|
const getPatientList = () => {
|
||||||
|
isShowNum.value = -1
|
||||||
id.value = null
|
id.value = null
|
||||||
post('registration/list', {
|
post('registration/list', {
|
||||||
page: page.value,
|
page: page.value,
|
||||||
|
|
@ -128,20 +140,24 @@ const id = ref<any>('')
|
||||||
const rowClick = (row: any) => {
|
const rowClick = (row: any) => {
|
||||||
id.value = row.id
|
id.value = row.id
|
||||||
nextTick(() => {
|
nextTick(() => {
|
||||||
editRef.value?.init(row.organizationDoctorId,row.id)
|
editRef.value?.init(row.organizationDoctorId, row.id)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
const editRef = ref<any>('')
|
const editRef = ref<any>('')
|
||||||
const openDialog = (item: any,index: any) => {
|
const openDialog = (item: any, index: any) => {
|
||||||
isShowNum.value=index
|
isShowNum.value = index
|
||||||
nextTick(() => {
|
nextTick(() => {
|
||||||
editRef.value?.init(item.id,null)
|
editRef.value?.init(item.id, null)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
const close = () => {
|
const close = () => {
|
||||||
id.value = null
|
id.value = null
|
||||||
getPatientList()
|
getPatientList()
|
||||||
}
|
}
|
||||||
|
const reset=() =>{
|
||||||
|
keyword.value=''
|
||||||
|
getPatientList()
|
||||||
|
}
|
||||||
</script>
|
</script>
|
||||||
<style scoped lang="scss">
|
<style scoped lang="scss">
|
||||||
.container-wrapper {
|
.container-wrapper {
|
||||||
|
|
@ -156,12 +172,14 @@ const close = () => {
|
||||||
|
|
||||||
.left {
|
.left {
|
||||||
height: 100%;
|
height: 100%;
|
||||||
width: 319px;
|
width: 382px;
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
|
|
||||||
.left-top {
|
.left-top {
|
||||||
height: 380px;
|
height: 399px;
|
||||||
|
background: #FFFFFF;
|
||||||
|
border-radius: 8px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.left-bottom {
|
.left-bottom {
|
||||||
|
|
@ -177,22 +195,9 @@ const close = () => {
|
||||||
padding: 0 10px;
|
padding: 0 10px;
|
||||||
border-radius: 5px;
|
border-radius: 5px;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
cursor: pointer;
|
|
||||||
|
|
||||||
&:hover {
|
&:hover {
|
||||||
background: #4D6DE4;
|
background: rgba(#4D6DE4, 0.3);
|
||||||
|
|
||||||
.name {
|
|
||||||
color: #fff;
|
|
||||||
}
|
|
||||||
|
|
||||||
.section_name {
|
|
||||||
color: #fff;
|
|
||||||
}
|
|
||||||
|
|
||||||
.btn {
|
|
||||||
color: #fff;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.name {
|
.name {
|
||||||
|
|
@ -206,10 +211,24 @@ const close = () => {
|
||||||
}
|
}
|
||||||
|
|
||||||
.btn {
|
.btn {
|
||||||
width: 50px;
|
cursor: pointer;
|
||||||
color: #b9b9ba;
|
|
||||||
padding: 5px;
|
padding: 5px;
|
||||||
border-radius: 3px;
|
width: 78px;
|
||||||
|
height: 32px;
|
||||||
|
border-radius: 6px;
|
||||||
|
background: #FFFFFF;
|
||||||
|
border: 1px solid #4D6DE4;
|
||||||
|
font-weight: bold;
|
||||||
|
font-size: 14px;
|
||||||
|
color: #4D6DE4;
|
||||||
|
font-style: normal;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
&:hover {
|
||||||
|
background: #4D6DE4;
|
||||||
|
color: #FFF;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -245,6 +264,7 @@ const close = () => {
|
||||||
flex: 1;
|
flex: 1;
|
||||||
height: 100%;
|
height: 100%;
|
||||||
min-width: 0;
|
min-width: 0;
|
||||||
|
|
||||||
.right-content {
|
.right-content {
|
||||||
padding-left: 20px;
|
padding-left: 20px;
|
||||||
display: flex;
|
display: flex;
|
||||||
|
|
@ -252,7 +272,10 @@ const close = () => {
|
||||||
height: 100%;
|
height: 100%;
|
||||||
|
|
||||||
.top {
|
.top {
|
||||||
|
padding-right: 24px;
|
||||||
height: 40px;
|
height: 40px;
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
}
|
}
|
||||||
|
|
||||||
.middle {
|
.middle {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue