136 lines
3.2 KiB
Vue
136 lines
3.2 KiB
Vue
<template>
|
||
<Mask :is-show="is_show" :width="450" :height="250" :show-footer="true" @close="close" title="诊断">
|
||
<template #default>
|
||
<div class="wrapper">
|
||
<span>诊断:</span>
|
||
<DiagnosisSearchInput
|
||
ref="diagnosisSearchRef"
|
||
:request-api="diagnosisSearchApi"
|
||
:show-config="diagnosisShowConfig"
|
||
@selectedCallBack="diagnosisSelect"
|
||
style="height: 100%;width: 100%"
|
||
>
|
||
</DiagnosisSearchInput>
|
||
</div>
|
||
</template>
|
||
<template #footer>
|
||
<div class="footer">
|
||
<div class="default-btn" @click="close">取消</div>
|
||
<div class="default-btn" @click="save">确定</div>
|
||
</div>
|
||
</template>
|
||
</Mask>
|
||
</template>
|
||
|
||
<script setup lang="ts">
|
||
import {ref} from "vue";
|
||
import Mask from "@/components/common/Mask.vue";
|
||
import DiagnosisSearchInput from "@/components/outpatient/DiagnosisSearchInput.vue";
|
||
import {getEndOfDay} from "@/utils/dateUtils.ts";
|
||
import {post} from "@/utils/request.ts";
|
||
import {ElMessage} from "element-plus";
|
||
import {API} from "@/assets/config/API.ts";
|
||
|
||
const is_show = ref(false);
|
||
const init = async () => {
|
||
is_show.value = true
|
||
try {
|
||
let data: any = await post(API.Patient.Registration.List, {
|
||
query: {
|
||
status: 1,
|
||
beginTime: new Date(),
|
||
endTime: getEndOfDay(new Date())
|
||
}
|
||
}, {catch_error: true});
|
||
post(API.Patient.Registration.ChangeStatus, {id: data.list[0].id, status: 2}).then((res: any) => {
|
||
registerId.value = res.id
|
||
patientId.value = res.patientInfoId
|
||
})
|
||
} catch (e) {
|
||
is_show.value = false
|
||
}
|
||
}
|
||
const diagnosisSearchApi = API.Social.Diagnose.Search
|
||
|
||
interface ShowConfig {
|
||
label: string;
|
||
prop: string;
|
||
}
|
||
|
||
const diagnosisShowConfig: ShowConfig[] = [
|
||
{
|
||
label: "诊断名称",
|
||
prop: "name",
|
||
},
|
||
{
|
||
label: "诊断编码",
|
||
prop: "code",
|
||
}
|
||
]
|
||
const medicalRecord = ref<any>({})
|
||
const registerId = ref<any>(null)
|
||
const patientId = ref<any>(null)
|
||
const diagnosisSelect = (list: any) => {
|
||
const diagnosisNames = list.map((item: any) => item.name).join(',')
|
||
medicalRecord.value.diagnosisDetail = JSON.stringify(list)
|
||
medicalRecord.value.diagnosisSummary = diagnosisNames
|
||
}
|
||
const emit = defineEmits(['close'])
|
||
const save = () => {
|
||
const data = {
|
||
registrationId: registerId.value,
|
||
patientId: patientId.value,
|
||
diagnosisMedicalRecord: medicalRecord.value,
|
||
itemList: [],
|
||
goodsList: [],
|
||
}
|
||
post(API.Diagnosis.Base.Save, {data: data}).then((res: any) => {
|
||
ElMessage.success("快速接诊成功")
|
||
is_show.value = false
|
||
emit('close')
|
||
})
|
||
}
|
||
const close = () => {
|
||
medicalRecord.value = {}
|
||
registerId.value = null
|
||
patientId.value = null
|
||
is_show.value = false
|
||
}
|
||
defineExpose({init})
|
||
</script>
|
||
|
||
<style scoped lang="scss">
|
||
.wrapper {
|
||
height: 100%;
|
||
width: 100%;
|
||
display: flex;
|
||
justify-content: center;
|
||
align-items: center;
|
||
padding: 24px;
|
||
span{
|
||
width: 60px;
|
||
}
|
||
}
|
||
|
||
:deep(.el-input__wrapper) {
|
||
height: 42px;
|
||
flex: 1;
|
||
min-width: 0;
|
||
}
|
||
|
||
.footer {
|
||
height: 100%;
|
||
display: flex;
|
||
justify-content: flex-end;
|
||
align-items: center;
|
||
padding: 0 24px;
|
||
|
||
.default-btn {
|
||
margin-left: 24px;
|
||
|
||
&:first-child {
|
||
margin-left: 0;
|
||
}
|
||
}
|
||
}
|
||
</style> |