This commit is contained in:
ChenQiuYu 2025-05-07 10:40:19 +08:00
parent 36619d5bce
commit 9edee03ccf
6 changed files with 63 additions and 43 deletions

View File

@ -0,0 +1,5 @@
{
"01": "甲",
"02": "乙",
"03": "丙"
}

View File

@ -11,6 +11,8 @@
class="no-border-input" class="no-border-input"
:disabled="disabled" :disabled="disabled"
@focus="focus" @focus="focus"
@click="changeInput"
>
> >
</el-input> </el-input>

View File

@ -1,27 +1,35 @@
<template> <template>
<Panel :title="'就诊信息'"> <Panel :title="'就诊信息'">
<div style="padding: 0 24px"> <div v-if="!patientRegistration?.patientInfo" style="display: flex;align-items: center;justify-content: center;height: 120px">请选择患者......</div>
<div v-else style="padding: 0 24px">
<div class="avatar"> <div class="avatar">
<img class="avatar-image" src="/static/images/outpatient/profile-picture.png" alt="头像"/> <img class="avatar-image"
:src="patientRegistration?.patientInfo?.sex == 1 ?'/static/images/outpatient/man.png':patientRegistration?.patientInfo?.sex == 2 ?'/static/images/outpatient/women.png':'-'"
alt=""/>
<div class="avatar-info-wrapper"> <div class="avatar-info-wrapper">
<div class="avatar-info"> <div class="avatar-info">
<span class="avatar-info-name">{{ patientRegistration?.patientInfo?.name }}</span> <span class="avatar-info-name">{{ patientRegistration?.patientInfo?.name }}</span>
<span class="avatar-info-sex" style="margin: 0 16px">{{ patientRegistration?.patientInfo?.sex == 1 ? '男' : '女'}}</span> <span class="avatar-info-age">{{ patientRegistration?.patientInfo?.age}}</span>
<span class="avatar-info-age">{{ patientRegistration?.patientInfo?.age }}</span>
</div> </div>
<div class="avatar-info-phone-num"> <div class="avatar-info-phone-num">
<span class="avatar-info-phone">{{ patientRegistration?.patientInfo?.phone }}</span> <span class="avatar-info-phone">{{ patientRegistration?.patientInfo?.phone }}</span>
<span class="avatar-info-num">就诊次数<i class="caret-num">{{ patientRegistration?.seeDoctorCount || 0 }}</i></span> <span class="avatar-info-num">就诊次数<i class="caret-num">{{
patientRegistration?.seeDoctorCount || 0
}}</i></span>
</div> </div>
</div> </div>
</div> </div>
<div class="detail"> <div class="detail">
<div>挂号医生:&nbsp;<span class="detail-doctor">{{patientRegistration?.dockerName}}-{{patientRegistration?.sectionName}}</span></div> <div>挂号医生:&nbsp;<span
class="detail-doctor">{{ patientRegistration?.dockerName }}-{{ patientRegistration?.sectionName }}</span>
</div>
<div class="detail-middle"> <div class="detail-middle">
<div>费用类别:&nbsp;<span class="detail-doctor">医保</span></div> <div>费用类别:&nbsp;<span class="detail-doctor">医保</span></div>
<div>医保卡剩余金额:&nbsp;<span class="detail-balance">{{patientRegistration?.socialBalance}}</span></div> <div>医保卡剩余金额:&nbsp;<span class="detail-balance">{{ patientRegistration?.socialBalance }}</span></div>
</div> </div>
<div>上次就诊时间:&nbsp;<span class="detail-doctor">{{ formatDate(patientRegistration?.lastSeeDoctorTime) }}</span></div> <div>上次就诊时间:&nbsp;<span class="detail-doctor">{{
formatDate(patientRegistration?.lastSeeDoctorTime)
}}</span></div>
</div> </div>
</div> </div>
</Panel> </Panel>
@ -29,7 +37,8 @@
<script setup lang="ts"> <script setup lang="ts">
import Panel from "@/components/common/Panel.vue"; import Panel from "@/components/common/Panel.vue";
import {formatDate} from "@/utils/dateUtils.ts" import {formatDate} from "@/utils/dateUtils.ts"
const patientRegistration=defineModel<any>()
const patientRegistration = defineModel<any>()
</script> </script>
<style scoped lang="scss"> <style scoped lang="scss">
.avatar { .avatar {
@ -55,11 +64,15 @@ const patientRegistration=defineModel<any>()
font-style: normal; font-style: normal;
.avatar-info { .avatar-info {
display: flex;
align-items: center;
.avatar-info-name { .avatar-info-name {
font-weight: 500; font-weight: 500;
font-size: 18px; font-size: 18px;
color: #333333; color: #333333;
font-style: normal; font-style: normal;
margin-right: 10px;
} }
.avatar-info-age { .avatar-info-age {

View File

@ -34,7 +34,7 @@ const list = defineModel<any[]>({default: () => []});
min-height: 0; min-height: 0;
.item { .item {
height: 64px; height: 30px;
border-top: 1px solid #EAEAEC; border-top: 1px solid #EAEAEC;
display: flex; display: flex;
align-items: center; align-items: center;
@ -44,7 +44,7 @@ const list = defineModel<any[]>({default: () => []});
height: 100%; height: 100%;
width: 50px; width: 50px;
text-align: center; text-align: center;
line-height: 64px; line-height: 30px;
border-right: 1px solid #EAEAEC; border-right: 1px solid #EAEAEC;
} }
@ -53,7 +53,7 @@ const list = defineModel<any[]>({default: () => []});
margin-left: 10px; margin-left: 10px;
border-right: 1px solid #EAEAEC; border-right: 1px solid #EAEAEC;
height: 100%; height: 100%;
line-height: 64px; line-height: 30px;
} }
.type { .type {
@ -61,7 +61,7 @@ const list = defineModel<any[]>({default: () => []});
margin-left: 10px; margin-left: 10px;
border-right: 1px solid #EAEAEC; border-right: 1px solid #EAEAEC;
height: 100%; height: 100%;
line-height: 64px; line-height: 30px;
} }
.unit { .unit {
@ -69,7 +69,7 @@ const list = defineModel<any[]>({default: () => []});
margin-left: 10px; margin-left: 10px;
border-right: 1px solid #EAEAEC; border-right: 1px solid #EAEAEC;
height: 100%; height: 100%;
line-height: 64px; line-height: 30px;
display: flex; display: flex;
align-items: center; align-items: center;
justify-content: center; justify-content: center;
@ -78,17 +78,10 @@ const list = defineModel<any[]>({default: () => []});
.price { .price {
height: 100%; height: 100%;
width: 200px; width: 200px;
line-height: 64px; line-height: 30px;
border-right: 1px solid #EAEAEC; border-right: 1px solid #EAEAEC;
text-align: center; text-align: center;
} }
.delete {
height: 100%;
width: 50px;
line-height: 64px;
text-align: center;
}
} }
} }

View File

@ -6,17 +6,20 @@
<li class="item" v-for="(item, index) in list" :key="index"> <li class="item" v-for="(item, index) in list" :key="index">
<div class="index">{{ index + 1 }}</div> <div class="index">{{ index + 1 }}</div>
<div class="name"> <div class="name">
<el-popover width="485"> <el-popover
width="485"
@show="show(item)"
>
<template #reference> <template #reference>
{{ item.itemName }} {{ item.itemName }}
</template> </template>
<div class="detail"> <div class="detail">
<div style="display: flex;justify-content: space-between"> <div style="display: flex;justify-content: space-between">
<div>{{ item.itemName }}</div> <div style="font-size: 18px;font-weight: 500;color: #000">{{ itemInfo.name }}[{{ chrgitm_lv[itemInfo.chrgitmLv as keyof typeof chrgitm_lv || '-'] || '-' }}]</div>
<div>{{ item.unitPrice }}/{{ item.unit }}</div> <div>{{ item.unitPrice }}/{{item.unit }}</div>
</div> </div>
<div> <div>
<div> {{item.itemSocialCode}}</div> <div> 医保码:{{item.itemSocialCode||'-'}}</div>
</div> </div>
</div> </div>
</el-popover> </el-popover>
@ -59,10 +62,12 @@
</Panel> </Panel>
</template> </template>
<script setup lang="ts"> <script setup lang="ts">
import {defineModel, computed,defineEmits} from "vue"; import {defineModel, computed,defineEmits,ref} from "vue";
import Panel from "@/components/common/Panel.vue"; import Panel from "@/components/common/Panel.vue";
import {Close} from '@element-plus/icons-vue' import {Close} from '@element-plus/icons-vue'
import SearchInput from "@/components/SearchInput.vue"; import SearchInput from "@/components/SearchInput.vue";
import {post} from "@/utils/request.ts";
import chrgitm_lv from "@/assets/config/directory/chrgitmLv.json"
const props = defineProps({ const props = defineProps({
status: { status: {
@ -103,6 +108,12 @@ const emit = defineEmits(['focus'])
const focus=(e:any)=>{ const focus=(e:any)=>{
emit('focus',e) emit('focus',e)
} }
const itemInfo = ref<any>({});
const show = (item:any) => {
post('social/directory/getItemByCode',{code:item.itemSocialCode}).then((res:any)=>{
itemInfo.value = res
})
}
</script> </script>
<style scoped lang="scss"> <style scoped lang="scss">
@ -135,7 +146,9 @@ const focus=(e:any)=>{
margin-left: 10px; margin-left: 10px;
height: 100%; height: 100%;
line-height: 30px; line-height: 30px;
white-space: nowrap; /* 防止文本换行 */
overflow: hidden; /* 隐藏溢出的文本 */
text-overflow: ellipsis; /* 显示省略号 */
} }
.code { .code {

View File

@ -14,7 +14,7 @@
</div> </div>
<div class="search"> <div class="search">
<span style="margin-left: 24px">合计</span> <span style="margin-left: 24px">合计</span>
<span style="margin-right: 24px">{{ list.reduce((acc, cur) => acc + cur.selectedPrice, 0) }}</span> <span style="margin-right: 24px">{{ list.reduce((acc, cur) => acc + cur.selectedNum*cur.selectedPrice, 0) }}</span>
</div> </div>
</div> </div>
</Panel> </Panel>
@ -36,7 +36,7 @@ const list = defineModel<any[]>({default: () => []});
min-height: 0; min-height: 0;
.item { .item {
height: 64px; height: 30px;
border-top: 1px solid #EAEAEC; border-top: 1px solid #EAEAEC;
display: flex; display: flex;
align-items: center; align-items: center;
@ -46,43 +46,37 @@ const list = defineModel<any[]>({default: () => []});
width: 50px; width: 50px;
text-align: center; text-align: center;
border-right: 1px solid #EAEAEC; border-right: 1px solid #EAEAEC;
line-height: 64px; line-height: 30px;
} }
.name{ .name{
flex: 1; flex: 1;
margin-left: 10px; margin-left: 10px;
border-right: 1px solid #EAEAEC; border-right: 1px solid #EAEAEC;
height: 100%; height: 100%;
line-height: 64px; line-height: 30px;
} }
.code{ .code{
flex: 1; flex: 1;
margin-left: 10px; margin-left: 10px;
border-right: 1px solid #EAEAEC; border-right: 1px solid #EAEAEC;
height: 100%; height: 100%;
line-height: 64px; line-height: 30px;
} }
.unit{ .unit{
width: 60px; width: 60px;
margin-left: 10px; margin-left: 10px;
border-right: 1px solid #EAEAEC; border-right: 1px solid #EAEAEC;
height: 100%; height: 100%;
line-height: 64px; line-height: 30px;
text-align: center; text-align: center;
} }
.price{ .price{
height: 100%; height: 100%;
width: 200px; width: 200px;
line-height: 64px; line-height: 30px;
border-right: 1px solid #EAEAEC; border-right: 1px solid #EAEAEC;
text-align: center; text-align: center;
} }
.delete{
height: 100%;
width: 50px;
line-height: 64px;
text-align: center;
}
} }
} }