Merge branch 'main' of ssh://git.jizhiweb.cn:2222/clinic-v2/web

This commit is contained in:
ChenQiuYu 2025-05-08 14:57:59 +08:00
commit 3cc94b2430
7 changed files with 118 additions and 85 deletions

View File

@ -36,6 +36,28 @@
</div>
</Panel>
</template>
<script setup lang="ts">
import {formatDate} from "@/utils/dateUtils.ts"
import Panel from "@/components/common/Panel.vue";
import {onMounted, ref} from "vue";
import {post} from "@/utils/request.ts";
const seeDockerInfo = ref<any>();
const getSeeDockerInfo = (newValue:any) => {
if (!newValue)return;
post('medical/record/getSeeDockerInfo', {regisId: newValue}).then((res: any) => {
seeDockerInfo.value = res
})
}
const init =(regisId:any)=>{
getSeeDockerInfo(regisId)
}
const clear = () => {
seeDockerInfo.value = {}
}
defineExpose({ init,clear})
</script>
<style scoped lang="scss">
.avatar {
@ -128,22 +150,3 @@
}
}
</style>
<script setup lang="ts">
import {formatDate} from "@/utils/dateUtils.ts"
import Panel from "@/components/common/Panel.vue";
import {onMounted, ref} from "vue";
import {post} from "@/utils/request.ts";
const seeDockerInfo = ref<any>();
const getSeeDockerInfo = (newValue:any) => {
if (!newValue)return;
post('medical/record/getSeeDockerInfo', {regisId: newValue}).then((res: any) => {
seeDockerInfo.value = res
})
}
const init =(regisId:any)=>{
getSeeDockerInfo(regisId)
}
defineExpose({ init})
</script>

View File

@ -123,7 +123,11 @@ const emit = defineEmits(['focus'])
const focus = (e:any)=>{
emit('focus',e)
}
defineExpose({initDiagnosisSearch})
const clearDiagnosis = ()=>{
diagnosisSearchRef.value?.clear()
}
defineExpose({initDiagnosisSearch,clearDiagnosis})
</script>
<style scoped lang="scss">
.content {

View File

@ -36,7 +36,7 @@ const props = defineProps({
},
width: {
type: Number,
default: 1000
default: 600
},
showConfig: {
@ -123,7 +123,12 @@ const focus = () => {
const handleBlur = () => {
isVisible.value = false
}
defineExpose({init})
const clear = () => {
selectList.value = []
nameList.value = []
keyword.value = ""
}
defineExpose({init,clear})
</script>
<style scoped lang="scss">
:deep(.el-table--small .el-table__cell) {

View File

@ -2,8 +2,8 @@
<Panel :title="'就诊队列'" style="height: 100%">
<div class="panel-content" style="display: flex;flex-direction: column;height: 100%">
<div class="tabs">
<span v-for="(item,index) in statusList" :class="props.status == index+1 ? 'tabs-item' : ''"
@click="tab(item)">{{ item.label }}&nbsp;{{ item.num }}</span>
<span v-for="(item,index) in statusList" :class="curStatus == item.status ? 'tabs-item' : ''"
@click="clickTab(item)">{{ item.label }}&nbsp;{{ item.num }}</span>
</div>
<div class="search">
<img src="/static/images/outpatient/search.png" class="search-icon" alt="搜索图标">
@ -12,7 +12,7 @@
<div class="list">
<ul style="height: 100%">
<el-scrollbar style="height: 100%">
<li class="list-item" :class="curItem.id == item.id ? 'active' : ''" v-for="(item, index) in list"
<li class="list-item" :class="curItem?.id == item.id ? 'active' : ''" v-for="(item, index) in list"
:key="index" @click="clickLi(item)">
<span>
<img v-if="item.gender==1" class="avatar" src="/static/images/outpatient/man.png"
@ -39,41 +39,30 @@ import {post} from "@/utils/request.ts";
import {formatListTime, getToday, getThisMonth} from "@/utils/dateUtils.ts";
import {apiConfig} from "@/assets/config/apiConfig.ts";
import {ElMessageBox} from "element-plus";
const props = defineProps({
status: {
type: Number,
default: 1
}
})
const curStatus = ref(1)
const search = ref('')
const curItem = ref<any>('')
const emit = defineEmits(['getId', 'changeDetail', 'getStatus'])
const tab = (item: any) => {
nextTick(() => {
emit('getStatus', item.value)
if (item.value == 3) {
emit('changeDetail', true)
} else {
emit('changeDetail', false)
}
})
const emit = defineEmits(['clickItem', 'changeTab'])
const clickTab = (item: any) => {
curStatus.value = item.status
emit('changeTab')
curItem.value = {}
}
const list = ref<any>([])
const statusList = ref<any>([
{
value: 1,
status: 1,
label: '候诊',
num: 0
},
{
value: 2,
status: 2,
label: '在诊',
num: 0
},
{
value: 3,
status: 3,
label: '已诊',
num: 0
}
@ -82,7 +71,7 @@ const itemId = defineModel()
onMounted(() => {
initStatusList()
curItem.value = itemId
if(props.status==1){
if(curStatus.value==1){
init()
}
})
@ -91,13 +80,14 @@ const init = () => {
loading.value = true
post(apiConfig.RegistrationList, {
query: {
status: props.status,
status: curStatus.value,
beginTime: '2024-05-07 23:59:59',
endTime: data.value.end
}
}).then((res: any) => {
loading.value = false
list.value = res.list
initStatusList()
})
}
const data = ref<any>(getToday())
@ -110,11 +100,36 @@ const initStatusList = () => {
}
const clickLi = (item: any) => {
curItem.value = item
emit('getId', item)
if (item.status == 1) {
ElMessageBox.confirm(`您将要接诊${item.name}`, "提示", {
confirmButtonText: '确定',
cancelButtonText: '取消',
callback: (action: any) => {
if (action == "confirm") {
post('registration/changeStatus', {id: item.id, status: 2}).then((res: any) => {
curStatus.value = 2
curItem.value = res
initStatusList()
})
}
},
})
}
emit('clickItem', curItem.value)
}
const changeCurItemOrStatus = (item:any, status:any) => {
if (item !=null){
curItem.value = item
}
if (curStatus != null){
curStatus.value = status
}
watch(() => props.status, () => {
console.log('status', props.status)
}
defineExpose({changeCurItemOrStatus})
watch(() => curStatus.value, () => {
console.log('status', curStatus.value)
init() //
})
</script>

View File

@ -2,12 +2,12 @@
import Panel from '../common/Panel.vue';
import {defineEmits, defineModel,defineProps} from 'vue'
const {status}=defineProps(['status'])
const emit = defineEmits(['save','deleteItem','edit']);
const emit = defineEmits(['save','cancelReception','edit']);
const save = () => {
emit('save');
};
const deleteItem = () => {
emit('deleteItem');
emit('cancelReception');
};
const totalAmount = defineModel<any>()
const editItem= () => {

View File

@ -290,7 +290,10 @@ const btn = (item: any, i: number) => {
} catch (error) {
areaData = null; //
}
areaName.value=findAreaName(areaData[areaData?.length-1])
if (areaData != null){
areaName.value=findAreaName(areaData[areaData?.length-1])
}
getChargeList(listItem.value.id)
}
//
@ -352,8 +355,11 @@ const searchVip = () => {
pageSize: 50,
keyword: input3.value,
}).then((res: any) => {
list.value = res;
listItem.value = res[0];
list.value = res.list;
totalCount.value = res.total_count
listItem.value = res.list[0];
console.log(listItem)
});
};
//

View File

@ -1,23 +1,23 @@
<template>
<div class="container">
<div class="left">
<MedicalQueue v-model="itemId" :status="status" @getId="getId" @getStatus="getStatus"></MedicalQueue>
<MedicalQueue v-model="itemId" @clickItem="clickItem" @changeTab="changeTab" ref="medicalQueueRef"></MedicalQueue>
</div>
<div class="middle">
<el-scrollbar>
<div class="case">
<CaseDetail v-if="patientRegistration.status==3" v-model="formData" ></CaseDetail>
<Case ref="caseRef" v-else v-model="formData" :status="status" :isShowFrom="isShowFrom" @focus="focus"></Case>
<Case ref="caseRef" v-else v-model="formData" :isShowFrom="isShowFrom" @focus="focus"></Case>
</div>
<div class="service-items">
<ServiceDetail v-model="formData.itemDetail" :status="status" @focus="focus" @totalPriceChange="getOrderTotalPrice"></ServiceDetail>
<ServiceDetail v-model="formData.itemDetail" @focus="focus" @totalPriceChange="getOrderTotalPrice"></ServiceDetail>
</div>
<div class="pharmaceutical-consumables">
<GoodsDetail v-model="formData.goodsDetail" :status="status" @focus="focus" @totalPriceChange="getOrderTotalPrice"></GoodsDetail>
<GoodsDetail v-model="formData.goodsDetail" @focus="focus" @totalPriceChange="getOrderTotalPrice"></GoodsDetail>
</div>
</el-scrollbar>
<div class="bottom">
<Settlement v-model="totalAmount" @deleteItem="deleteItem" @save="save" :status="status"
<Settlement v-model="totalAmount" @cancelReception="cancelReception" @save="save" :status="curRegister?.status"
@edit="edit"></Settlement>
</div>
@ -51,7 +51,7 @@ import {apiConfig} from "@/assets/config/apiConfig.ts";
import PatientCard from "@/components/charge/PatientCard.vue";
import ServiceDetail from "@/components/common/service/ServiceDetail.vue";
import GoodsDetail from "@/components/common/goods/GoodsDetail.vue";
const curRegister = ref()
const registerId = ref()
const patientId = ref()
const itemDetail = ref([])
@ -61,6 +61,18 @@ const formData = ref<any>({
itemDetail: [],
goodsDetail: [],
})
const initFormData = () => {
formData.value = {
diagType: 1,
itemDetail: [],
goodsDetail: [],
}
nextTick(()=>{
caseRef.value?.clearDiagnosis()
patientCardRef.value?.clear()
})
}
const save = () => {
let json = {
chinaAdjunctCheck: formData.value.chinaAdjunctCheck,
@ -90,33 +102,23 @@ const save = () => {
}
post('medical/record/save', {data: data}).then(() => {
ElMessage.success("保存成功")
medicalQueueRef.value?.changeCurItemOrStatus(null,1);
})
}
const totalAmount = ref(0)
const medicalInformationRef = ref()
const medicalHistoryRef = ref()
const patientCardRef = ref()
const patientRegistration = ref<any>({})
const getId = (item: any) => {
const clickItem = (item: any) => {
curRegister.value = item
registerId.value = item.id
itemId.value = item.id
patientId.value = item.patientInfoId
status.value = item.status
if (item.status == 1) {
ElMessageBox.confirm(`您将要接诊${item.name}`, "提示", {
confirmButtonText: '确定',
cancelButtonText: '取消',
callback: (action: any) => {
if (action == "confirm") {
post('registration/changeStatus', {id: item.id, status: 2}).then((res: any) => {
status.value = 2
})
}
},
})
if (item.status == 2){
initFormData()
}
if (item.status == 3) {
post(apiConfig.RegistrationDetail, {
@ -131,20 +133,18 @@ const getId = (item: any) => {
}
nextTick(() => {
medicalHistoryRef.value?.init(patientId.value);
patientCardRef.value?.init(registerId.value)
patientCardRef.value?.init(curRegister.value.id)
})
}
const status = ref<any>(1)
const deleteItem = () => {
const medicalQueueRef =ref();
const cancelReception = () => {
post('registration/changeStatus', {id: registerId.value, status: 1}).then((res: any) => {
status.value = 1
medicalQueueRef.value?.changeCurItemOrStatus(res,1);
})
}
const getStatus = (e: any) => {
status.value = e
formData.value.itemDetail = []
formData.value.goodsDetail = []
const changeTab = (e: any) => {
initFormData()
patientRegistration.value = {}
nextTick(() => {
medicalHistoryRef.value?.clearList();
@ -153,7 +153,7 @@ const getStatus = (e: any) => {
const itemId = ref<any>('')
const edit = () => {
post('registration/changeStatus', {id: registerId.value, status: 2}).then((res: any) => {
status.value = 2
medicalQueueRef.value?.changeCurItemOrStatus(res,2);
})
}
const getOrderTotalPrice = () => {