dev
This commit is contained in:
parent
358bb39ffb
commit
859cacc1ce
|
|
@ -1,17 +1,17 @@
|
||||||
|
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
<Panel title="患者信息">
|
<Panel title="患者信息">
|
||||||
<div v-if="!seeDockerInfo?.patientInfo" style="display: flex;align-items: center;justify-content: center;height: 120px">请选择患者......</div>
|
<div v-if="!seeDockerInfo?.patientInfo"
|
||||||
|
style="display: flex;align-items: center;justify-content: center;height: 120px">请选择患者......
|
||||||
|
</div>
|
||||||
<div v-else style="padding: 0 24px">
|
<div v-else style="padding: 0 24px">
|
||||||
<div class="avatar">
|
<div class="avatar">
|
||||||
<img class="avatar-image"
|
<img class="avatar-image"
|
||||||
:src="seeDockerInfo?.patientInfo?.sex == 1 ?'/static/images/outpatient/man.png':seeDockerInfo?.patientInfo?.sex == 2 ?'/static/images/outpatient/women.png':'-'"
|
:src="seeDockerInfo?.patientInfo?.sex == 1 ?'/static/images/outpatient/man.png':seeDockerInfo?.patientInfo?.sex == 2 ?'/static/images/outpatient/women.png':'-'"
|
||||||
alt=""/>
|
alt=""/>
|
||||||
<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||0}}岁</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,14 @@
|
||||||
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">{{seeDockerInfo.registerType==2?'医保':'自费'}}</span></div>
|
<div>费用类别: <span class="detail-doctor">{{ seeDockerInfo.registerType == 2 ? '医保' : '自费' }}</span>
|
||||||
<div>医保卡剩余金额: <span class="detail-balance">{{ seeDockerInfo.patientInfo.socialBalance?seeDockerInfo.patientInfo.socialBalance+"元":"-" }}</span></div>
|
</div>
|
||||||
|
<div>医保卡剩余金额: <span class="detail-balance">{{
|
||||||
|
seeDockerInfo.patientInfo.socialBalance ? seeDockerInfo.patientInfo.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>
|
||||||
|
|
@ -42,20 +45,21 @@ import {formatDate} from "@/utils/dateUtils.ts"
|
||||||
import Panel from "@/components/common/Panel.vue";
|
import Panel from "@/components/common/Panel.vue";
|
||||||
import {onMounted, ref} from "vue";
|
import {onMounted, ref} from "vue";
|
||||||
import {post} from "@/utils/request.ts";
|
import {post} from "@/utils/request.ts";
|
||||||
|
|
||||||
const seeDockerInfo = ref<any>();
|
const seeDockerInfo = ref<any>();
|
||||||
const getSeeDockerInfo = (newValue:any) => {
|
const getSeeDockerInfo = (newValue: any) => {
|
||||||
if (!newValue)return;
|
if (!newValue) return;
|
||||||
post('medical/record/getSeeDockerInfo', {regisId: newValue}).then((res: any) => {
|
post('medical/record/getSeeDockerInfo', {regisId: newValue}).then((res: any) => {
|
||||||
seeDockerInfo.value = res
|
seeDockerInfo.value = res
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
const init =(regisId:any)=>{
|
const init = (regisId: any) => {
|
||||||
getSeeDockerInfo(regisId)
|
getSeeDockerInfo(regisId)
|
||||||
}
|
}
|
||||||
const clear = () => {
|
const clear = () => {
|
||||||
seeDockerInfo.value = {}
|
seeDockerInfo.value = {}
|
||||||
}
|
}
|
||||||
defineExpose({ init,clear})
|
defineExpose({init, clear})
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
|
@ -71,7 +75,8 @@ defineExpose({ init,clear})
|
||||||
}
|
}
|
||||||
|
|
||||||
.avatar-info-wrapper {
|
.avatar-info-wrapper {
|
||||||
width: 100%;
|
flex: 1;
|
||||||
|
min-width: 0;
|
||||||
height: 60px;
|
height: 60px;
|
||||||
padding: 6px 0;
|
padding: 6px 0;
|
||||||
display: flex;
|
display: flex;
|
||||||
|
|
@ -84,14 +89,20 @@ defineExpose({ init,clear})
|
||||||
|
|
||||||
.avatar-info {
|
.avatar-info {
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
span {
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
.avatar-info-name {
|
.avatar-info-name {
|
||||||
|
flex: 1;
|
||||||
|
min-width: 0;
|
||||||
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;
|
margin-right: 10px;
|
||||||
|
white-space: nowrap; /* 防止文本换行 */
|
||||||
|
overflow: hidden; /* 隐藏溢出的文本 */
|
||||||
|
text-overflow: ellipsis; /* 显示省略号 */
|
||||||
}
|
}
|
||||||
|
|
||||||
.avatar-info-age {
|
.avatar-info-age {
|
||||||
|
|
@ -119,7 +130,6 @@ defineExpose({ init,clear})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -46,7 +46,7 @@
|
||||||
</el-descriptions-item>
|
</el-descriptions-item>
|
||||||
<el-descriptions-item label="售价">
|
<el-descriptions-item label="售价">
|
||||||
<el-form-item prop="unitPrice">
|
<el-form-item prop="unitPrice">
|
||||||
<el-input v-model.number="form.unitPrice">
|
<el-input v-model="form.unitPrice">
|
||||||
<template #prefix>¥</template>
|
<template #prefix>¥</template>
|
||||||
</el-input>
|
</el-input>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
|
@ -190,7 +190,16 @@ const formRules = {
|
||||||
],
|
],
|
||||||
unitPrice: [
|
unitPrice: [
|
||||||
{required: true, message: '请输入售价', trigger: 'blur'},
|
{required: true, message: '请输入售价', trigger: 'blur'},
|
||||||
{type: 'number', message: '单位必须为数字值'}
|
{
|
||||||
|
validator: (rule: any, value: number, callback: any) => {
|
||||||
|
if (!/^\d+(\.\d{1,2})?$/.test(value.toString())) {
|
||||||
|
callback(new Error('售价最多保留两位小数'));
|
||||||
|
} else {
|
||||||
|
callback();
|
||||||
|
}
|
||||||
|
},
|
||||||
|
trigger: 'blur'
|
||||||
|
}
|
||||||
]
|
]
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -19,13 +19,16 @@
|
||||||
<div class="total">共{{ totalCount || 0 }}条</div>
|
<div class="total">共{{ totalCount || 0 }}条</div>
|
||||||
<ul class="content">
|
<ul class="content">
|
||||||
<el-scrollbar style="height: 100%">
|
<el-scrollbar style="height: 100%">
|
||||||
<li v-for="(item,i) in list" :key="item.id" :class="index==i?'active':''" @click="btn(item,i)">
|
<li class="list-item" v-for="(item,i) in list" :key="item.id" :class="index==i?'active':''"
|
||||||
<img class="image"
|
@click="btn(item,i)">
|
||||||
:src="'/static/images/member/' + (item.sex === 1 ? 'man' : 'women') + '.png'"
|
<span class="item-avatar">
|
||||||
alt=""/>
|
<img class="image"
|
||||||
<div class="name">{{ item.name || '-' }}</div>
|
:src="'/static/images/member/' + (item.sex === 1 ? 'man' : 'women') + '.png'"
|
||||||
<span class="level">{{ item.levelName || "-" }}</span>
|
alt=""/>
|
||||||
<span class="time">{{ formatListTime(item.lastVisitTime) }}</span>
|
</span>
|
||||||
|
<span class="item-name">{{ item.name || '-' }}</span>
|
||||||
|
<span class="item-level">{{ item.levelName || "-" }}</span>
|
||||||
|
<span class="item-time">{{ formatListTime(item.lastVisitTime) }}</span>
|
||||||
</li>
|
</li>
|
||||||
</el-scrollbar>
|
</el-scrollbar>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
@ -42,7 +45,7 @@
|
||||||
alt="">
|
alt="">
|
||||||
<div class="detail-top-left-text">
|
<div class="detail-top-left-text">
|
||||||
<div class="detail-top-left-text-name">
|
<div class="detail-top-left-text-name">
|
||||||
<span style="margin-right: 16px">{{ listItem.name || '-' }}</span>
|
<span class="name" style="margin-right: 16px">{{ listItem.name || '-' }}</span>
|
||||||
<el-tag type="success">{{ listItem.levelName || '-' }}</el-tag>
|
<el-tag type="success">{{ listItem.levelName || '-' }}</el-tag>
|
||||||
</div>
|
</div>
|
||||||
<div class="detail-top-left-text-phone">
|
<div class="detail-top-left-text-phone">
|
||||||
|
|
@ -380,10 +383,10 @@ const antysList = ref<any>(Object.entries(antys).map(([id, name]) => ({id, name}
|
||||||
const certTypeList = ref<any>(Object.entries(psnCertTypes).map(([id, name]) => ({id, name})))
|
const certTypeList = ref<any>(Object.entries(psnCertTypes).map(([id, name]) => ({id, name})))
|
||||||
const flowingId = ref();
|
const flowingId = ref();
|
||||||
const flowingWaterRef = ref();
|
const flowingWaterRef = ref();
|
||||||
const openFlowingWater=()=>{
|
const openFlowingWater = () => {
|
||||||
isFlowingWater.value=true
|
isFlowingWater.value = true
|
||||||
flowingId.value=listItem.value.id
|
flowingId.value = listItem.value.id
|
||||||
nextTick(()=>{
|
nextTick(() => {
|
||||||
flowingWaterRef.value?.init(flowingId.value)
|
flowingWaterRef.value?.init(flowingId.value)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
@ -449,56 +452,48 @@ const openFlowingWater=()=>{
|
||||||
border-radius: 8px;
|
border-radius: 8px;
|
||||||
border: 1px solid #EAEAEC;
|
border: 1px solid #EAEAEC;
|
||||||
|
|
||||||
li {
|
.list-item {
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
|
||||||
height: 50px;
|
height: 50px;
|
||||||
line-height: 50px;
|
line-height: 50px;
|
||||||
padding: 0 24px;
|
padding: 0 24px;
|
||||||
color: #000000;
|
color: #000000;
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
|
span {
|
||||||
&:first-child {
|
text-align: center;
|
||||||
border-top-left-radius: 8px;
|
height: 100%;
|
||||||
border-top-right-radius: 8px;
|
display: block;
|
||||||
}
|
}
|
||||||
|
.item-avatar {
|
||||||
&:last-child {
|
width: 20px;
|
||||||
border-bottom-left-radius: 8px;
|
height: 100%;
|
||||||
border-bottom-right-radius: 8px;
|
margin-right: 10px;
|
||||||
|
.image {
|
||||||
|
margin-top: 15px;
|
||||||
|
width: 20px;
|
||||||
|
height: 20px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.item-name{
|
||||||
|
flex: 1;
|
||||||
|
min-width: 0;
|
||||||
|
white-space: nowrap;
|
||||||
|
overflow: hidden;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
text-align: left;
|
||||||
|
}
|
||||||
|
.item-level{
|
||||||
|
width: 50px;
|
||||||
|
}
|
||||||
|
.item-time{
|
||||||
|
width: 50px;
|
||||||
|
font-size: 12px;
|
||||||
|
color: #7a8794;
|
||||||
}
|
}
|
||||||
|
|
||||||
&:hover {
|
&:hover {
|
||||||
background: rgba(#4D6DE4, 0.5);
|
background: rgba(#4D6DE4, 0.5);
|
||||||
}
|
}
|
||||||
|
|
||||||
.image {
|
|
||||||
width: 20px;
|
|
||||||
height: 20px;
|
|
||||||
margin-right: 5px
|
|
||||||
}
|
|
||||||
|
|
||||||
.name {
|
|
||||||
flex: 2;
|
|
||||||
}
|
|
||||||
|
|
||||||
.level {
|
|
||||||
flex: 2;
|
|
||||||
margin-right: 20px;
|
|
||||||
white-space: nowrap;
|
|
||||||
overflow: hidden;
|
|
||||||
text-overflow: ellipsis;
|
|
||||||
}
|
|
||||||
|
|
||||||
.time {
|
|
||||||
flex: 2;
|
|
||||||
font-size: 12px;
|
|
||||||
color: #7a8794;
|
|
||||||
white-space: nowrap;
|
|
||||||
overflow: hidden;
|
|
||||||
text-overflow: ellipsis;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.active {
|
.active {
|
||||||
|
|
@ -535,10 +530,11 @@ const openFlowingWater=()=>{
|
||||||
.detail-top {
|
.detail-top {
|
||||||
height: 60px;
|
height: 60px;
|
||||||
display: flex;
|
display: flex;
|
||||||
justify-content: space-between;
|
|
||||||
align-items: center;
|
align-items: center;
|
||||||
|
|
||||||
.detail-top-left {
|
.detail-top-left {
|
||||||
|
flex: 1;
|
||||||
|
min-width: 0;
|
||||||
display: flex;
|
display: flex;
|
||||||
|
|
||||||
.image {
|
.image {
|
||||||
|
|
@ -553,10 +549,17 @@ const openFlowingWater=()=>{
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
|
|
||||||
.detail-top-left-text-name {
|
.detail-top-left-text-name {
|
||||||
|
flex: 1;
|
||||||
|
min-width: 0;
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
font-size: 24px;
|
font-size: 24px;
|
||||||
color: #333333;
|
color: #333333;
|
||||||
font-style: normal;
|
font-style: normal;
|
||||||
|
.name{
|
||||||
|
white-space: nowrap; /* 防止文本换行 */
|
||||||
|
overflow: hidden; /* 隐藏溢出的文本 */
|
||||||
|
text-overflow: ellipsis; /* 显示省略号 */
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.detail-top-left-text-phone {
|
.detail-top-left-text-phone {
|
||||||
|
|
@ -573,27 +576,9 @@ const openFlowingWater=()=>{
|
||||||
}
|
}
|
||||||
|
|
||||||
.detail-top-right {
|
.detail-top-right {
|
||||||
|
width: 552px;
|
||||||
display: flex;
|
display: flex;
|
||||||
height: 42px;
|
height: 42px;
|
||||||
|
|
||||||
.btn {
|
|
||||||
flex: 1;
|
|
||||||
background: #FFFFFF;
|
|
||||||
border-radius: 6px;
|
|
||||||
border: 1px solid #4D6DE4;
|
|
||||||
padding: 10px 12px;
|
|
||||||
font-weight: 500;
|
|
||||||
font-size: 16px;
|
|
||||||
color: #4D6DE4;
|
|
||||||
font-style: normal;
|
|
||||||
margin-left: 24px;
|
|
||||||
cursor: pointer;
|
|
||||||
|
|
||||||
&:hover {
|
|
||||||
color: #FFFFFF;
|
|
||||||
background: #4D6DE4;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -161,11 +161,14 @@ const getOrderTotalPrice = () => {
|
||||||
formData.value.itemDetail?.forEach((item: any) => {
|
formData.value.itemDetail?.forEach((item: any) => {
|
||||||
totalPrice += item.selectedPrice * item.selectedNum
|
totalPrice += item.selectedPrice * item.selectedNum
|
||||||
})
|
})
|
||||||
|
console.log(totalPrice,'totalPrice')
|
||||||
formData.value.goodsDetail?.forEach((item: any) => {
|
formData.value.goodsDetail?.forEach((item: any) => {
|
||||||
totalPrice += item.selectedPrice * item.selectedNum
|
totalPrice += item.selectedPrice * item.selectedNum
|
||||||
})
|
})
|
||||||
|
console.log(totalPrice,'totalPrice')
|
||||||
formData.value.preTotalPrice = Math.round((totalPrice * 100) / 100)
|
formData.value.preTotalPrice = Math.round((totalPrice * 100) / 100)
|
||||||
formData.value.totalPrice = Math.round((totalPrice * 100) / 100)
|
formData.value.totalPrice = totalPrice
|
||||||
|
console.log(formData.value.totalPrice,'formData.value.totalPrice')
|
||||||
}
|
}
|
||||||
const caseRef = ref<any>("")
|
const caseRef = ref<any>("")
|
||||||
const copyForm = (item: any) => {
|
const copyForm = (item: any) => {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue