版本更新
This commit is contained in:
@@ -0,0 +1,158 @@
|
||||
<template>
|
||||
<div class="awaitList-container">
|
||||
<div class="operate">
|
||||
<el-space>
|
||||
<el-input
|
||||
v-model="queryParams.searchKey"
|
||||
style="max-width: 600px"
|
||||
placeholder="请输入内容"
|
||||
class="input-with-select"
|
||||
>
|
||||
</el-input>
|
||||
<el-button @click="resetQuery">重置</el-button>
|
||||
<el-button type="primary" @click="handleQuery">查询</el-button>
|
||||
</el-space>
|
||||
<el-space>
|
||||
<!-- <el-button>读卡</el-button> -->
|
||||
<!-- <el-button type="primary">无档登记</el-button> -->
|
||||
</el-space>
|
||||
</div>
|
||||
<div class="table-container">
|
||||
<el-table
|
||||
:data="treatHospitalizedData"
|
||||
style="width: 100%"
|
||||
height="100%"
|
||||
show-overflow-tooltip
|
||||
>
|
||||
<el-table-column type="index" width="54" align="center" label="序号" />
|
||||
<el-table-column prop="patientName" align="center" label="申请患者" />
|
||||
<el-table-column prop="genderEnum_enumText" label="性别" align="center" />
|
||||
<el-table-column prop="age" label="年龄" align="center" />
|
||||
<el-table-column prop="sourceName" align="center" label="申请来源">
|
||||
<template #default="scope">
|
||||
{{ scope.row.sourceName || '-' }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="requestTime" align="center" label="申请时间" />
|
||||
<el-table-column prop="wardName" align="center" label="入院病区" />
|
||||
<el-table-column prop="registrar" align="center" label="登记员" />
|
||||
<el-table-column fixed="right" align="center" label="操作" width="88">
|
||||
<template #default="scope">
|
||||
<el-button type="primary" text @click="doEdit(scope.row)"> 查看 </el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<pagination
|
||||
v-show="total > 0"
|
||||
:total="total"
|
||||
v-model:page="queryParams.pageNo"
|
||||
v-model:limit="queryParams.pageSize"
|
||||
@pagination="getList"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
<PatientRegister
|
||||
v-model="patientRegisterVisible"
|
||||
:patientInfo="patient"
|
||||
:inHospitalInfo="inHospitalInfo"
|
||||
title="登记"
|
||||
:registrationType="registrationType"
|
||||
:alreadyEdit="alreadyEdit"
|
||||
:noFile="noFile"
|
||||
@okAct="patientRegisterOK"
|
||||
@cancelAct="cancelAct"
|
||||
/>
|
||||
</template>
|
||||
<script setup >
|
||||
import PatientRegister from './patientRegister.vue';
|
||||
import { getAdmissionPage, getPatientBasicInfo, getInHospitalInfo } from './api';
|
||||
//const { proxy } = getCurrentInstance();
|
||||
const emits = defineEmits([]);
|
||||
// const props = defineProps({});
|
||||
const searchForm = reactive({
|
||||
searchType: 'name',
|
||||
searchKey: '',
|
||||
});
|
||||
const total = ref();
|
||||
const inHospitalInfo = ref({});
|
||||
const alreadyEdit = ref(true);
|
||||
const queryParams = ref({
|
||||
pageNo: 1,
|
||||
pageSize: 10,
|
||||
searchKey: undefined,
|
||||
registeredFlag: '1',
|
||||
searchKey: '',
|
||||
});
|
||||
|
||||
const treatHospitalizedData = ref([]);
|
||||
const patientRegisterVisible = ref(false);
|
||||
const noFile = ref(false);
|
||||
const registrationType = ref(true);
|
||||
const patient = ref({});
|
||||
const doEdit = (row) => {
|
||||
getPatientBasicInfo(row.patientId).then((res) => {
|
||||
patient.value = res.data;
|
||||
});
|
||||
getInHospitalInfo(row.encounterId).then((res) => {
|
||||
inHospitalInfo.value = res.data;
|
||||
patientRegisterVisible.value = true;
|
||||
noFile.value = false;
|
||||
});
|
||||
};
|
||||
onBeforeMount(() => {});
|
||||
onMounted(() => {
|
||||
getList();
|
||||
});
|
||||
const activeName = ref('first');
|
||||
|
||||
const patientRegisterOK = () => {
|
||||
patientRegisterVisible.value = false;
|
||||
queryParams.value.searchKey = '';
|
||||
emits('okList');
|
||||
resetQuery();
|
||||
};
|
||||
|
||||
const cancelAct = () => {
|
||||
patientRegisterVisible.value = false;
|
||||
};
|
||||
|
||||
/** 搜索按钮操作 */
|
||||
function handleQuery() {
|
||||
queryParams.value.pageNo = 1;
|
||||
getList();
|
||||
}
|
||||
|
||||
function resetQuery() {
|
||||
queryParams.value = {
|
||||
pageNo: 1,
|
||||
pageSize: 10,
|
||||
searchKey: undefined,
|
||||
registeredFlag: '1',
|
||||
searchKey: '',
|
||||
};
|
||||
getList();
|
||||
}
|
||||
|
||||
const getList = () => {
|
||||
getAdmissionPage(queryParams.value).then((res) => {
|
||||
treatHospitalizedData.value = res.data.records;
|
||||
total.value = res.data.total;
|
||||
});
|
||||
};
|
||||
</script>
|
||||
<style lang="scss" scoped>
|
||||
.awaitList-container {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
.operate {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
height: 40px;
|
||||
padding: 0 16px;
|
||||
align-items: center;
|
||||
}
|
||||
.table-container {
|
||||
padding: 8px 16px;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,169 @@
|
||||
import request from '@/utils/request'
|
||||
|
||||
// 获取住院信息初期数据列表
|
||||
export function getInit(query) {
|
||||
return request({
|
||||
url: '/inpatient-manage/init',
|
||||
method: 'get',
|
||||
params: query
|
||||
})
|
||||
}
|
||||
|
||||
// 获取住院信息 分页显示
|
||||
// export function getAdmissionPage(query) {
|
||||
// return request({
|
||||
// url: '/inpatient-manage/admission-page',
|
||||
// method: 'get',
|
||||
// params: query
|
||||
// })
|
||||
// }
|
||||
// 获取住院信息 分页显示 新
|
||||
export function getAdmissionPage(query) {
|
||||
return request({
|
||||
url: '/inhospital-charge/register/register-info',
|
||||
method: 'get',
|
||||
params: query
|
||||
})
|
||||
}
|
||||
|
||||
// 住院无档登记
|
||||
export function addAdmissionInfo(data) {
|
||||
return request({
|
||||
url: '/inpatient-manage/admission-information',
|
||||
method: 'post',
|
||||
data: data
|
||||
})
|
||||
}
|
||||
|
||||
// 住院登记
|
||||
export function admissionInfo(data) {
|
||||
return request({
|
||||
url: '/inpatient-manage/admission-information',
|
||||
method: 'put',
|
||||
data: data
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取科室下拉列表
|
||||
*/
|
||||
export function getOrgList() {
|
||||
return request({
|
||||
url: '/base-data-manage/organization/organization',
|
||||
method: 'get',
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询病区下拉列表
|
||||
*/
|
||||
export function wardList() {
|
||||
return request({
|
||||
url: '/app-common/ward-list',
|
||||
method: 'get'
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取诊断基础下拉数据
|
||||
*/
|
||||
export function diagnosisInit() {
|
||||
return request({
|
||||
url: '/doctor-station/diagnosis/init',
|
||||
method: 'get',
|
||||
})
|
||||
}
|
||||
|
||||
// 查询患者相关
|
||||
export function patientlLists() {
|
||||
return request({
|
||||
url: '/patient-manage/information/init',
|
||||
method: 'get'
|
||||
})
|
||||
}
|
||||
|
||||
// 查询患者相关
|
||||
export function doctorList(id) {
|
||||
return request({
|
||||
url: '/inpatient-manage/doctor-list?orgId=' + id,
|
||||
method: 'get'
|
||||
})
|
||||
}
|
||||
|
||||
// 查询患者相关
|
||||
export function getPatientInfo(id, statusEnum) {
|
||||
return request({
|
||||
url: `/inpatient-manage/admission-one?id=${id}&statusEnum=${statusEnum}`,
|
||||
method: 'get'
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
// 获取患者基础信息
|
||||
export function getPatientBasicInfo(patientId) {
|
||||
return request({
|
||||
url: `/inhospital-charge/register/patient-info?patientId=${patientId}`,
|
||||
method: 'get'
|
||||
})
|
||||
}
|
||||
|
||||
// 获取患者入院信息
|
||||
export function getInHospitalInfo(encounterId) {
|
||||
return request({
|
||||
url: `/inhospital-charge/register/in-hospital-info?encounterId=${encounterId}`,
|
||||
method: 'get'
|
||||
})
|
||||
}
|
||||
|
||||
// 获取病区床位信息
|
||||
export function getBedInfo(wardBusNo) {
|
||||
return request({
|
||||
url: `/inhospital-charge/register/beds-num?wardBusNo=${wardBusNo}`,
|
||||
method: 'get'
|
||||
})
|
||||
}
|
||||
|
||||
// 住院登记
|
||||
export function registerInHospital(data) {
|
||||
return request({
|
||||
url: '/inhospital-charge/register/by-cashier',
|
||||
method: 'post',
|
||||
data: data
|
||||
})
|
||||
}
|
||||
|
||||
// 无档登记
|
||||
export function noFilesRegister(data) {
|
||||
return request({
|
||||
url: '/inhospital-charge/register/no-files',
|
||||
method: 'post',
|
||||
data: data
|
||||
})
|
||||
}
|
||||
|
||||
// 表单初始化
|
||||
export function patientFormInit() {
|
||||
return request({
|
||||
url: '/patient-manage/information/init',
|
||||
method: 'get'
|
||||
})
|
||||
}
|
||||
|
||||
// 合同
|
||||
export function getContractList() {
|
||||
return request({
|
||||
url: '/app-common/contract-list',
|
||||
method: 'get',
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取诊断定义列表
|
||||
*/
|
||||
export function getDiagnosisDefinitionList(queryParams) {
|
||||
return request({
|
||||
url: '/doctor-station/diagnosis/condition-definition-metadata',
|
||||
method: 'get',
|
||||
params: queryParams
|
||||
})
|
||||
}
|
||||
@@ -0,0 +1,150 @@
|
||||
<template>
|
||||
<div class="awaitList-container">
|
||||
<div class="operate">
|
||||
<el-space>
|
||||
<el-input
|
||||
v-model="queryParams.searchKey"
|
||||
style="max-width: 600px"
|
||||
placeholder="请输入内容"
|
||||
class="input-with-select"
|
||||
@keydown.enter="handleQuery"
|
||||
>
|
||||
</el-input>
|
||||
<el-button @click="resetQuery">重置</el-button>
|
||||
<el-button type="primary" @click="handleQuery">查询</el-button>
|
||||
</el-space>
|
||||
<el-space>
|
||||
<!-- <el-button>读卡</el-button> -->
|
||||
<el-button type="primary" @click="doRegistering('no-file')">无档登记</el-button>
|
||||
</el-space>
|
||||
</div>
|
||||
<div class="table-container">
|
||||
<el-table
|
||||
:data="treatHospitalizedData"
|
||||
style="width: 100%"
|
||||
height="100%"
|
||||
show-overflow-tooltip
|
||||
>
|
||||
<el-table-column type="index" width="54" align="center" label="序号" />
|
||||
<el-table-column prop="patientName" align="center" label="患者姓名" />
|
||||
<el-table-column prop="genderEnum_enumText" label="性别" align="center" />
|
||||
<el-table-column prop="age" label="年龄" align="center" />
|
||||
<el-table-column prop="requestTime" align="center" label="申请时间" />
|
||||
<el-table-column prop="sourceName" align="center" label="申请来源" />
|
||||
<el-table-column prop="wardName" align="center" label="入院病区" />
|
||||
<el-table-column fixed="right" align="center" label="操作" width="88">
|
||||
<template #default="scope">
|
||||
<el-button type="primary" link @click="doRegistering(scope.row)"> 登记 </el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<pagination
|
||||
v-show="total > 0"
|
||||
:total="total"
|
||||
v-model:page="queryParams.pageNo"
|
||||
v-model:limit="queryParams.pageSize"
|
||||
@pagination="getList"
|
||||
/>
|
||||
</div>
|
||||
<PatientRegister
|
||||
v-model="patientRegisterVisible"
|
||||
:patientInfo="patient"
|
||||
:inHospitalInfo="inHospitalInfo"
|
||||
title="登记"
|
||||
:registrationType="registrationType"
|
||||
@okAct="patientRegisterOK"
|
||||
@cancelAct="cancelAct"
|
||||
:noFile="noFile"
|
||||
/>
|
||||
</div>
|
||||
</template>
|
||||
<script setup>
|
||||
import PatientRegister from './patientRegister.vue';
|
||||
import { getAdmissionPage, getPatientBasicInfo, getInHospitalInfo } from './api';
|
||||
const emits = defineEmits(['okList']);
|
||||
|
||||
const total = ref();
|
||||
const patient = ref({});
|
||||
const inHospitalInfo = ref({});
|
||||
const noFile = ref(false);
|
||||
const registrationType = ref(true);
|
||||
const queryParams = ref({
|
||||
pageNo: 1,
|
||||
pageSize: 10,
|
||||
searchKey: undefined,
|
||||
registeredFlag: '0',
|
||||
searchKey: '',
|
||||
});
|
||||
|
||||
const treatHospitalizedData = ref([]);
|
||||
const doRegistering = (row) => {
|
||||
if (row == 'no-file') {
|
||||
patientRegisterVisible.value = true;
|
||||
noFile.value = true;
|
||||
inHospitalInfo.value = {};
|
||||
} else {
|
||||
getPatientBasicInfo(row.patientId).then((res) => {
|
||||
patient.value = res.data;
|
||||
});
|
||||
getInHospitalInfo(row.encounterId).then((res) => {
|
||||
inHospitalInfo.value = res.data;
|
||||
patientRegisterVisible.value = true;
|
||||
noFile.value = false;
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
const getList = () => {
|
||||
getAdmissionPage(queryParams.value).then((res) => {
|
||||
treatHospitalizedData.value = res.data.records;
|
||||
total.value = res.data.total;
|
||||
});
|
||||
};
|
||||
|
||||
/** 搜索按钮操作 */
|
||||
function handleQuery() {
|
||||
queryParams.value.pageNo = 1;
|
||||
getList();
|
||||
}
|
||||
|
||||
function resetQuery() {
|
||||
queryParams.value = {
|
||||
pageNo: 1,
|
||||
pageSize: 10,
|
||||
searchKey: undefined,
|
||||
registeredFlag: '0',
|
||||
searchKey: '',
|
||||
};
|
||||
getList();
|
||||
}
|
||||
const patientRegisterVisible = ref(false);
|
||||
const patientYbRegisterVisible = ref(false);
|
||||
|
||||
const patientRegisterOK = () => {
|
||||
patientRegisterVisible.value = false;
|
||||
queryParams.value.searchKey = '';
|
||||
emits('okList');
|
||||
};
|
||||
|
||||
const cancelAct = () => {
|
||||
patientRegisterVisible.value = false;
|
||||
};
|
||||
|
||||
getList();
|
||||
</script>
|
||||
<style lang="scss" scoped>
|
||||
.awaitList-container {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
.operate {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
height: 40px;
|
||||
padding: 0 16px;
|
||||
align-items: center;
|
||||
}
|
||||
.table-container {
|
||||
padding: 8px 16px;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,99 @@
|
||||
<template>
|
||||
<div class="awaitList-container">
|
||||
<div class="operate">
|
||||
<el-space>
|
||||
<el-input
|
||||
v-model="searchForm.searchVal"
|
||||
style="max-width: 600px"
|
||||
placeholder="请输入内容"
|
||||
class="input-with-select"
|
||||
>
|
||||
<template #prepend>
|
||||
<el-select v-model="searchForm.searchType" placeholder="" style="width: 115px">
|
||||
<el-option label="患者姓名" value="name" />
|
||||
<el-option label="诊疗卡号" value="MED_ID" />
|
||||
<el-option label="身份证号" value="1" />
|
||||
</el-select>
|
||||
</template>
|
||||
</el-input>
|
||||
<el-button>重置</el-button>
|
||||
<el-button type="primary">查询</el-button>
|
||||
</el-space>
|
||||
<el-space>
|
||||
<!-- <el-button>读卡</el-button>
|
||||
<el-button type="primary">无档登记</el-button> -->
|
||||
</el-space>
|
||||
</div>
|
||||
<div class="table-container">
|
||||
<el-table
|
||||
:data="treatHospitalizedData"
|
||||
style="width: 100%"
|
||||
height="100%"
|
||||
show-overflow-tooltip
|
||||
>
|
||||
<el-table-column type="index" width="54" label="序号" />
|
||||
<el-table-column prop="storageName" label="申请来源"> </el-table-column>
|
||||
<el-table-column prop="createdDate" label="申请时间" min-width="160" />
|
||||
<el-table-column prop="name" label="申请患者" />
|
||||
<el-table-column prop="deptNurseName" label="入院病区" />
|
||||
<el-table-column prop="sexName" label="性别" />
|
||||
<el-table-column prop="purchaseTotalAmount" label="年龄"> </el-table-column>
|
||||
</el-table>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
<script setup >
|
||||
import { getAdmissionPage } from './api';
|
||||
//const { proxy } = getCurrentInstance();
|
||||
const emits = defineEmits([]);
|
||||
// const props = defineProps({});
|
||||
const searchForm = reactive({
|
||||
searchType: 'name',
|
||||
searchVal: '',
|
||||
});
|
||||
|
||||
const queryParams = ref({
|
||||
pageNo: 1,
|
||||
pageSize: 10,
|
||||
searchKey: undefined,
|
||||
registeredFlag: '1',
|
||||
searchKey: '',
|
||||
});
|
||||
const total = ref(0);
|
||||
const treatHospitalizedData = ref([]);
|
||||
const doRegistering = (row) => {};
|
||||
onBeforeMount(() => {});
|
||||
onMounted(() => {
|
||||
getList();
|
||||
});
|
||||
// defineExpose({ state });
|
||||
|
||||
const getList = () => {
|
||||
getAdmissionPage(queryParams.value).then((res) => {
|
||||
treatHospitalizedData.value = res.data.records;
|
||||
total.value = res.data.total;
|
||||
});
|
||||
};
|
||||
|
||||
const activeName = ref('first');
|
||||
|
||||
// const handleClick = (tab: TabsPaneContext, event: Event) => {
|
||||
// console.log(tab, event);
|
||||
// };
|
||||
</script>
|
||||
<style lang="scss" scoped>
|
||||
.awaitList-container {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
.operate {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
height: 40px;
|
||||
padding: 0 16px;
|
||||
align-items: center;
|
||||
}
|
||||
.table-container {
|
||||
padding: 8px 16px;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,4 @@
|
||||
import AwaitList from "./awaitList.vue";
|
||||
import AccomplishList from "./accomplishList.vue";
|
||||
import ExistList from "./existList.vue";
|
||||
export {AwaitList,AccomplishList,ExistList}
|
||||
@@ -0,0 +1,407 @@
|
||||
<template>
|
||||
<div class="patientInfo-container">
|
||||
<div class="operate">
|
||||
<div>基础信息</div>
|
||||
<!-- <div
|
||||
v-if="props.registrationType"
|
||||
type="primary"
|
||||
@click="toggleEdit"
|
||||
style="margin-right: 0; cursor: pointer; margin-right: 12px"
|
||||
>
|
||||
{{ isEditing ? '取消' : '编辑' }}
|
||||
</div> -->
|
||||
<div>
|
||||
<el-radio-group v-model="typeCode">
|
||||
<el-radio label="电子凭证" value="01"></el-radio>
|
||||
<el-radio label="医保卡" value="03"></el-radio>
|
||||
<el-radio label="身份证" value="02"></el-radio>
|
||||
</el-radio-group>
|
||||
<span
|
||||
@click="handleReadCard(typeCode)"
|
||||
style="cursor: pointer; margin: 0 12px 0 30px; color: #409eff"
|
||||
>
|
||||
{{ '读卡' }}
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 展示模式 -->
|
||||
<div v-if="!noFile" style="margin-left: 30px">
|
||||
<el-row class="patientInfos">
|
||||
<el-col :span="2" class="patInfo-label">
|
||||
<el-text truncated>患者编码:</el-text>
|
||||
</el-col>
|
||||
<el-col :span="4" class="patInfo-value">
|
||||
<el-text truncated>{{ patientInfo?.busNo || '-' }}</el-text>
|
||||
</el-col>
|
||||
<el-col :span="2" class="patInfo-label">
|
||||
<el-text truncated>患者姓名:</el-text>
|
||||
</el-col>
|
||||
<el-col :span="4" class="patInfo-value">
|
||||
<el-text truncated>{{ patientInfo?.name || '-' }}</el-text>
|
||||
</el-col>
|
||||
<el-col :span="2" class="patInfo-label">
|
||||
<el-text truncated>费别类型:</el-text>
|
||||
</el-col>
|
||||
<el-col :span="4" class="patInfo-value">
|
||||
<el-text truncated>{{ patientInfo?.ybClassEnum_enumText || '-' }}</el-text>
|
||||
<!-- TODO -->
|
||||
<svg-icon size="20" icon-class="hipEdit" style="cursor: pointer" @click="changFeeType" />
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row class="patientInfos">
|
||||
<el-col :span="2" class="patInfo-label">
|
||||
<el-text truncated>证件类型:</el-text>
|
||||
</el-col>
|
||||
<!-- TODO -->
|
||||
<el-col :span="4" class="patInfo-value">
|
||||
<el-text truncated>{{ patientInfo?.patientTypeCode_dictText || '-' }}</el-text>
|
||||
</el-col>
|
||||
<el-col :span="2" class="patInfo-label">
|
||||
<el-text truncated>证件号:</el-text>
|
||||
</el-col>
|
||||
<el-col :span="4" class="patInfo-value">
|
||||
<el-text truncated>{{ patientInfo?.idCard || '-' }}</el-text>
|
||||
</el-col>
|
||||
<el-col :span="2" class="patInfo-label">
|
||||
<el-text truncated>出生日期:</el-text>
|
||||
</el-col>
|
||||
<el-col :span="4" class="patInfo-value">
|
||||
<el-text truncated>{{ patientInfo?.birthDate || '-' }}</el-text>
|
||||
</el-col>
|
||||
<el-col :span="2" class="patInfo-label">
|
||||
<el-text truncated>年龄:</el-text>
|
||||
</el-col>
|
||||
<el-col :span="4" class="patInfo-value">
|
||||
<el-text truncated>{{ patientInfo?.ageString || '-' }}</el-text>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row class="patientInfos">
|
||||
<el-col :span="2" class="patInfo-label">
|
||||
<el-text truncated>性别:</el-text>
|
||||
</el-col>
|
||||
<el-col :span="4" class="patInfo-value">
|
||||
<div>{{ patientInfo?.genderEnum_enumText || '-' }}</div>
|
||||
</el-col>
|
||||
<el-col :span="2" class="patInfo-label">
|
||||
<el-text truncated>民族:</el-text>
|
||||
</el-col>
|
||||
<el-col :span="4" class="patInfo-value">
|
||||
<div>{{ patientInfo?.nationalityCode || '-' }}</div>
|
||||
</el-col>
|
||||
<el-col :span="2" class="patInfo-label">
|
||||
<el-text truncated>国籍:</el-text>
|
||||
</el-col>
|
||||
<el-col :span="4" class="patInfo-value">
|
||||
<div>{{ patientInfo?.countryCode || '-' }}</div>
|
||||
</el-col>
|
||||
<el-col :span="2" class="patInfo-label">
|
||||
<el-text truncated>婚姻:</el-text>
|
||||
</el-col>
|
||||
<el-col :span="4" class="patInfo-value">
|
||||
<div>{{ patientInfo?.maritalStatusEnum_enumText || '-' }}</div>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row class="patientInfos">
|
||||
<el-col :span="2" class="patInfo-label">
|
||||
<el-text truncated>职业:</el-text>
|
||||
</el-col>
|
||||
<el-col :span="4" class="patInfo-value">
|
||||
<div>{{ patientInfo?.prfsEnum_enumText || '-' }}</div>
|
||||
</el-col>
|
||||
<el-col :span="2" class="patInfo-label">
|
||||
<el-text truncated>手机:</el-text>
|
||||
</el-col>
|
||||
<el-col :span="4" class="patInfo-value">
|
||||
<div>{{ patientInfo.phone || '-' }}</div>
|
||||
</el-col>
|
||||
<el-col :span="2" class="patInfo-label">
|
||||
<el-text truncated>现住址:</el-text>
|
||||
</el-col>
|
||||
<el-col :span="4" class="patInfo-value">
|
||||
<div>{{ patientInfo?.address || '-' }}</div>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row class="patientInfos">
|
||||
<!-- <el-col :span="2" class="patInfo-label">
|
||||
<el-text truncated>户口地址:</el-text>
|
||||
</el-col>
|
||||
<el-col :span="4" class="patInfo-value">
|
||||
<div>{{ patientInfo?.nativeExactAddr }}</div>
|
||||
</el-col> -->
|
||||
<el-col :span="2" class="patInfo-label">
|
||||
<el-text truncated>籍贯:</el-text>
|
||||
</el-col>
|
||||
<el-col :span="4" class="patInfo-value">
|
||||
<div>{{ patientInfo?.nativePlace || '-' }}</div>
|
||||
</el-col>
|
||||
<el-col :span="2" class="patInfo-label">
|
||||
<el-text truncated>病人来源:</el-text>
|
||||
</el-col>
|
||||
<el-col :span="4" class="patInfo-value">
|
||||
<div>{{ patientInfo?.organizationId_dictText || '-' }}</div>
|
||||
</el-col>
|
||||
<el-col :span="2" class="patInfo-label">
|
||||
<el-text truncated>单位名称:</el-text>
|
||||
</el-col>
|
||||
<el-col :span="4" class="patInfo-value">
|
||||
<div>{{ patientInfo?.workCompany || '-' }}</div>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</div>
|
||||
<div v-else>
|
||||
<PatientInfoForm ref="patientInfoFormRef" />
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import { ref, reactive, watch } from 'vue';
|
||||
import PatientInfoForm from './patientInfoForm.vue';
|
||||
import { patientlLists, getOrgList } from './api';
|
||||
|
||||
const typeList = ref({});
|
||||
const patientInfoFormRef = ref();
|
||||
const props = defineProps({
|
||||
patientInfo: {
|
||||
type: Object,
|
||||
require: true,
|
||||
default: () => ({}),
|
||||
},
|
||||
registrationType: {
|
||||
type: [String, Boolean, Number], // 根据实际类型调整
|
||||
default: null, // 或者 false、'' 等
|
||||
},
|
||||
initOptions: {
|
||||
type: Object,
|
||||
require: true,
|
||||
default: () => ({}),
|
||||
},
|
||||
noFile: {
|
||||
type: Boolean,
|
||||
default: false,
|
||||
},
|
||||
});
|
||||
const emits = defineEmits(['onChangFeeType']);
|
||||
const registerRef = ref();
|
||||
const typeCode = ref('01');
|
||||
const organization = ref([]);
|
||||
|
||||
onMounted(() => {
|
||||
getInitOptions();
|
||||
});
|
||||
|
||||
// 编辑状态
|
||||
const isEditing = ref(false);
|
||||
|
||||
watch(
|
||||
() => props.registrationType,
|
||||
(newValue) => {
|
||||
isEditing.value = !newValue;
|
||||
},
|
||||
{ immediate: true }
|
||||
);
|
||||
|
||||
watch(
|
||||
() => props.patientInfo,
|
||||
(newValue) => {},
|
||||
{ immediate: true }
|
||||
);
|
||||
|
||||
function getInitOptions() {
|
||||
patientlLists().then((res) => {
|
||||
typeList.value = res.data;
|
||||
});
|
||||
getOrgList().then((res) => {
|
||||
organization.value = res.data.records;
|
||||
});
|
||||
}
|
||||
|
||||
// 表单数据
|
||||
const form = reactive({});
|
||||
|
||||
// 切换编辑状态
|
||||
const toggleEdit = () => {
|
||||
if (!isEditing.value) {
|
||||
// 取消时恢复原值
|
||||
Object.assign(form, props.patientInfo);
|
||||
}
|
||||
isEditing.value = !isEditing.value;
|
||||
};
|
||||
|
||||
// 提交表单
|
||||
const submitForm = async (callback) => {
|
||||
console.log('提交更新:', form);
|
||||
if (!registerRef.value) return false;
|
||||
registerRef.value.validate((valid) => {
|
||||
if (valid) {
|
||||
callback();
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
});
|
||||
};
|
||||
async function handleReadCard(value) {
|
||||
if (window.CefSharp === undefined) {
|
||||
alert('请在医保版本中调用读卡功能!');
|
||||
} else {
|
||||
try {
|
||||
await CefSharp.BindObjectAsync('boundAsync');
|
||||
// string url,
|
||||
// string fixmedins_code,
|
||||
// string businessType,
|
||||
// string operatorCode,
|
||||
// string operatorName,
|
||||
// string officeId,
|
||||
// string officeName
|
||||
|
||||
// readCardLoading.value = true;
|
||||
let jsonResult;
|
||||
let cardInfo;
|
||||
let userMessage = undefined;
|
||||
switch (value) {
|
||||
case '01': // 电子凭证
|
||||
// readCardLoading.value = true;
|
||||
await boundAsync
|
||||
.getInfoByQrCodeAsync(
|
||||
'http://10.47.0.67:8089/localcfc/api/hsecfc/localQrCodeQuery',
|
||||
'H22010200672',
|
||||
'01101',
|
||||
userStore.id,
|
||||
userStore.name,
|
||||
'D83',
|
||||
'财务科'
|
||||
)
|
||||
.then((res) => {
|
||||
readCardLoading.value = true;
|
||||
loadingText.value = '正在读取...';
|
||||
jsonResult = res;
|
||||
})
|
||||
.catch(() => {
|
||||
readCardLoading.value = false;
|
||||
});
|
||||
cardInfo = JSON.parse(jsonResult);
|
||||
let message = JSON.parse(cardInfo.message);
|
||||
userMessage = {
|
||||
certType: '02', // 证件类型
|
||||
certNo: message.data.idNo, // 身份证号
|
||||
psnCertType: '02', // 居民身份证
|
||||
};
|
||||
break;
|
||||
case '02':
|
||||
break;
|
||||
case '03': // 社保卡
|
||||
readCardLoading.value = true;
|
||||
loadingText.value = '正在读取...';
|
||||
await boundAsync
|
||||
.readHeaSecCardAsync(
|
||||
JSON.stringify({
|
||||
IP: 'ddjk.jlhs.gov.cn',
|
||||
PORT: 20215,
|
||||
TIMEOUT: 60,
|
||||
SFZ_DRIVER_TYPE: 1,
|
||||
})
|
||||
)
|
||||
.then((res) => {
|
||||
jsonResult = res;
|
||||
})
|
||||
.finally(() => {
|
||||
readCardLoading.value = false;
|
||||
});
|
||||
// console.log(
|
||||
// 'jsonResult',
|
||||
// JSON.parse({
|
||||
// IssuingAreaCode: '310000',
|
||||
// SocialSecurityNumber: '371324198810224515',
|
||||
// CardNumber: 'M501A1A78',
|
||||
// CardIdentificationCode: '310000D15600000535925154E880AB97',
|
||||
// Name: '\u5218\u5CF0',
|
||||
// CardResetInfo: '00814A444686603100333E4FA9',
|
||||
// SpecificationVersion: '3.00',
|
||||
// IssuingDate: '20190313',
|
||||
// ExpirationDate: '20290313',
|
||||
// TerminalNumber: '000000000000',
|
||||
// TerminalDeviceNumber: '00041161201901000005',
|
||||
// Code: 0,
|
||||
// ErrorMessage: null,
|
||||
// })
|
||||
// );
|
||||
let message1 = JSON.parse(jsonResult);
|
||||
userMessage = {
|
||||
certType: '02', // 证件类型
|
||||
certNo: message1.SocialSecurityNumber, // 身份证号
|
||||
psnCertType: '02', // 居民身份证
|
||||
};
|
||||
break;
|
||||
case '99':
|
||||
break;
|
||||
}
|
||||
readCardLoading.value = true;
|
||||
if (userMessage.certNo) {
|
||||
gerPreInfo(userMessage)
|
||||
.then((res) => {
|
||||
if (res.code == 200) {
|
||||
form.value.patientId = res.data.id;
|
||||
form.value.name = res.data.name;
|
||||
form.value.age = res.data.age;
|
||||
form.value.idCard = res.data.idCard;
|
||||
form.value.card = res.data.id;
|
||||
form.value.contractNo = res.data.contractBusNo;
|
||||
form.value.genderEnum = res.data.genderEnum;
|
||||
form.value.ybAreaNo = res.data.contractName;
|
||||
}
|
||||
})
|
||||
.finally(() => {
|
||||
readCardLoading.value = false;
|
||||
});
|
||||
}
|
||||
} catch (error) {
|
||||
console.error('调用失败:', error);
|
||||
readCardLoading.value = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
function getPatientForm() {
|
||||
console.log(patientInfoFormRef.value.form);
|
||||
|
||||
return patientInfoFormRef.value.form;
|
||||
}
|
||||
|
||||
// 患者费别变更
|
||||
const changFeeType = () => {
|
||||
emits('onChangFeeType');
|
||||
};
|
||||
defineExpose({ submitForm, form, isEditing, getPatientForm });
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.patientInfo-container {
|
||||
.operate {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
height: 32px;
|
||||
border-radius: 4px 4px 0px 0px;
|
||||
background: rgba(37, 109, 149, 0.05);
|
||||
padding-left: 16px;
|
||||
color: var(--hip-color-primary-light);
|
||||
font-weight: bold;
|
||||
margin-bottom: 8px;
|
||||
}
|
||||
|
||||
> .patientInfos {
|
||||
margin-bottom: 16px;
|
||||
|
||||
&:not(.patientInfo-container :has(+ .patientInfos)) {
|
||||
margin-bottom: 0px;
|
||||
}
|
||||
}
|
||||
}
|
||||
.patInfo-label {
|
||||
color: #606266 !important;
|
||||
font-size: 14px;
|
||||
font-weight: 700 !important;
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,392 @@
|
||||
<template>
|
||||
<el-form ref="patientRef" :model="form" :rules="rules" label-width="100px">
|
||||
<el-row>
|
||||
<el-col :span="6">
|
||||
<el-form-item label="姓名" prop="name">
|
||||
<el-input v-model="form.name" clearable :disabled="isViewMode" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<el-form-item label="性别" prop="genderEnum">
|
||||
<el-radio-group v-model="form.genderEnum" :disabled="isViewMode">
|
||||
<el-radio
|
||||
v-for="item in administrativegenderList"
|
||||
:key="item.value"
|
||||
:label="item.value"
|
||||
>
|
||||
{{ item.info }}
|
||||
</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<!-- <el-col :span="6">
|
||||
<el-form-item label="活动标识" prop="tempFlag">
|
||||
<el-radio-group v-model="form.tempFlag" :disabled="isViewMode">
|
||||
<el-radio v-for="dict in patient_temp_flag" :key="dict.value" :label="dict.value">
|
||||
{{ dict.label }}
|
||||
</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
</el-col> -->
|
||||
<el-col :span="6">
|
||||
<el-form-item label="联系方式" prop="phone">
|
||||
<el-input v-model="form.phone" clearable :disabled="isViewMode" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<el-form-item label="年龄" prop="age">
|
||||
<el-input
|
||||
v-model="form.age"
|
||||
:disabled="isViewMode"
|
||||
@input="(value) => (form.age = value.replace(/[^0-9]/g, ''))"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<el-form-item label="卡类别" prop="typeCode">
|
||||
<el-select v-model="form.typeCode" placeholder="卡类别" clearable :disabled="isViewMode">
|
||||
<el-option
|
||||
v-for="dict in sys_idtype"
|
||||
:key="dict.value"
|
||||
:label="dict.label"
|
||||
:value="dict.value"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<el-form-item label="证件号码" prop="idCard">
|
||||
<el-input v-model="form.idCard" clearable :disabled="isViewMode" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<el-form-item label="就诊卡号" prop="identifierNo">
|
||||
<el-input v-model="form.identifierNo" clearable :disabled="isViewMode" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<el-form-item label="民族" prop="nationalityCode">
|
||||
<el-select v-model="form.nationalityCode" clearable filterable :disabled="isViewMode">
|
||||
<el-option
|
||||
v-for="item in nationality_code"
|
||||
:key="item.value"
|
||||
:label="item.label"
|
||||
:value="item.value"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<!-- <el-col :span="6">
|
||||
<el-form-item label="年龄" prop="age">
|
||||
<el-input v-model="form.age" clearable :disabled="isViewMode"/>
|
||||
</el-form-item>
|
||||
</el-col> -->
|
||||
<el-row>
|
||||
<el-col :span="6">
|
||||
<el-form-item label="国家编码" prop="countryCode">
|
||||
<el-input v-model="form.countryCode" clearable :disabled="isViewMode" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<el-form-item label="职业" prop="prfsEnum">
|
||||
<el-select v-model="form.prfsEnum" placeholder="职业" clearable :disabled="isViewMode">
|
||||
<el-option
|
||||
v-for="item in occupationtypeList"
|
||||
:key="item.value"
|
||||
:label="item.info"
|
||||
:value="item.value"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<el-form-item label="工作单位" prop="workCompany">
|
||||
<el-input v-model="form.workCompany" clearable :disabled="isViewMode" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row>
|
||||
<el-col :span="6">
|
||||
<el-form-item label="联系人" prop="linkName">
|
||||
<el-input v-model="form.linkName" clearable :disabled="isViewMode" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<el-form-item label="联系人关系" prop="linkRelationCode">
|
||||
<el-select
|
||||
v-model="form.linkRelationCode"
|
||||
placeholder="联系人关系"
|
||||
clearable
|
||||
:disabled="isViewMode"
|
||||
>
|
||||
<el-option
|
||||
v-for="item in familyrelationshiptypeList"
|
||||
:key="item.value"
|
||||
:label="item.info"
|
||||
:value="item.value"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<el-form-item label="联系人电话" prop="linkRelationCode">
|
||||
<el-input v-model="form.linkTelcom" clearable :disabled="isViewMode" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row>
|
||||
<el-col :span="6">
|
||||
<el-form-item label="地址选择" prop="addressSelect">
|
||||
<el-cascader
|
||||
:options="options"
|
||||
:props="{ checkStrictly: true, value: 'code', label: 'name' }"
|
||||
v-model="selectedOptions"
|
||||
@change="handleChange"
|
||||
:disabled="isViewMode"
|
||||
>
|
||||
<template #default="{ node, data }">
|
||||
<span>{{ data.name }}</span>
|
||||
<span v-if="!node.isLeaf"> ({{ data.children.length }}) </span>
|
||||
</template>
|
||||
</el-cascader>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="详细地址" prop="address">
|
||||
<el-input v-model="form.address" clearable :disabled="isViewMode" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row>
|
||||
<el-col :span="6">
|
||||
<el-form-item label="血型ABO" prop="bloodAbo">
|
||||
<el-select v-model="form.bloodAbo" placeholder="血型ABO" clearable :disabled="isViewMode">
|
||||
<el-option
|
||||
v-for="item in bloodtypeaboList"
|
||||
:key="item.value"
|
||||
:label="item.info"
|
||||
:value="item.value"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<el-form-item label="血型RH" prop="bloodRh">
|
||||
<el-select v-model="form.bloodRh" placeholder="血型RH" clearable :disabled="isViewMode">
|
||||
<el-option
|
||||
v-for="item in bloodtypearhList"
|
||||
:key="item.value"
|
||||
:label="item.info"
|
||||
:value="item.value"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<el-form-item label="婚姻状态" prop="maritalStatusEnum">
|
||||
<el-select
|
||||
v-model="form.maritalStatusEnum"
|
||||
placeholder="婚姻状态"
|
||||
clearable
|
||||
:disabled="isViewMode"
|
||||
>
|
||||
<el-option
|
||||
v-for="item in maritalstatusList"
|
||||
:key="item.value"
|
||||
:label="item.info"
|
||||
:value="item.value"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<el-form-item label="死亡时间" prop="deceasedDate">
|
||||
<el-date-picker
|
||||
v-model="form.deceasedDate"
|
||||
type="datetime"
|
||||
placeholder="请选择时间"
|
||||
format="YYYY/MM/DD HH:mm:ss"
|
||||
:disabled="isViewMode"
|
||||
value-format="YYYY/MM/DD HH:mm:ss"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-form>
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import { watch } from 'vue';
|
||||
import pcas from 'china-division/dist/pcas-code.json';
|
||||
import { patientFormInit } from './api';
|
||||
|
||||
const { proxy } = getCurrentInstance();
|
||||
const {
|
||||
patient_gender_enum,
|
||||
sys_idtype,
|
||||
prfs_enum,
|
||||
blood_rh,
|
||||
blood_abo,
|
||||
marital_status_enum,
|
||||
patient_temp_flag,
|
||||
link_relation_code,
|
||||
nationality_code,
|
||||
} = proxy.useDict(
|
||||
'patient_gender_enum',
|
||||
'sys_idtype',
|
||||
'prfs_enum',
|
||||
'blood_rh',
|
||||
'blood_abo',
|
||||
'marital_status_enum',
|
||||
'patient_temp_flag',
|
||||
'link_relation_code',
|
||||
'nationality_code'
|
||||
);
|
||||
|
||||
const selectedOptions = ref([]); // v-model 绑定的选中值
|
||||
const maritalstatusList = ref([]); //婚姻
|
||||
const occupationtypeList = ref([]); //职业
|
||||
const administrativegenderList = ref([]); //性别
|
||||
const bloodtypeaboList = ref([]); //血型abo
|
||||
const bloodtypearhList = ref([]); //血型RH
|
||||
const familyrelationshiptypeList = ref([]); //家庭关系
|
||||
// 使用 ref 定义查询所得用户信息数据
|
||||
const patientInfo = ref(undefined);
|
||||
const addressCom = ref(''); //地址
|
||||
|
||||
const options = ref(pcas); // 地区数据
|
||||
const emits = defineEmits(['submit']); // 声明自定义事件
|
||||
|
||||
const data = reactive({
|
||||
isViewMode: false,
|
||||
form: {
|
||||
typeCode: '01',
|
||||
},
|
||||
rules: {
|
||||
name: [{ required: true, message: '姓名不能为空', trigger: 'change' }],
|
||||
genderEnum: [{ required: true, message: '请选择性别', trigger: 'change' }],
|
||||
age: [{ required: true, message: '年龄不能为空', trigger: 'change' }],
|
||||
phone: [{ required: true, message: '联系方式不能为空', trigger: 'change' }],
|
||||
},
|
||||
});
|
||||
|
||||
const { queryParams, form, rules, isViewMode } = toRefs(data);
|
||||
|
||||
const props = defineProps({
|
||||
item: {
|
||||
type: Object,
|
||||
required: false,
|
||||
},
|
||||
});
|
||||
|
||||
watch(
|
||||
() => form.value.idCard,
|
||||
(newIdCard) => {
|
||||
if (newIdCard && newIdCard.length === 18) {
|
||||
const birthYear = parseInt(newIdCard.substring(6, 10));
|
||||
const birthMonth = parseInt(newIdCard.substring(10, 12));
|
||||
const birthDay = parseInt(newIdCard.substring(12, 14));
|
||||
|
||||
const today = new Date();
|
||||
const currentYear = today.getFullYear();
|
||||
const currentMonth = today.getMonth() + 1;
|
||||
const currentDay = today.getDate();
|
||||
|
||||
let age = currentYear - birthYear;
|
||||
|
||||
// 如果当前月份小于出生月份,或者月份相同但当前日期小于出生日期,则年龄减1
|
||||
if (currentMonth < birthMonth || (currentMonth === birthMonth && currentDay < birthDay)) {
|
||||
age--;
|
||||
}
|
||||
|
||||
form.value.age = age;
|
||||
}
|
||||
}
|
||||
);
|
||||
getList();
|
||||
/** 查询菜单列表 */
|
||||
function getList() {
|
||||
patientFormInit().then((response) => {
|
||||
console.log(response);
|
||||
occupationtypeList.value = response.data.occupationType;
|
||||
administrativegenderList.value = response.data.sex;
|
||||
bloodtypeaboList.value = response.data.bloodTypeABO;
|
||||
bloodtypearhList.value = response.data.bloodTypeRH;
|
||||
familyrelationshiptypeList.value = response.data.familyRelationshipType;
|
||||
maritalstatusList.value = response.data.maritalStatus;
|
||||
});
|
||||
}
|
||||
|
||||
//地址选择
|
||||
const handleChange = () => {
|
||||
const checkedNodes = selectedOptions.value.map((code) => {
|
||||
const node = findNodeByCode(options.value, code);
|
||||
return node ? node.name : null;
|
||||
});
|
||||
form.value.addressProvince = checkedNodes[0] || '';
|
||||
form.value.addressCity = checkedNodes[1] || '';
|
||||
form.value.addressDistrict = checkedNodes[2] || '';
|
||||
form.value.addressStreet = checkedNodes[3] || '';
|
||||
form.value.address = '';
|
||||
};
|
||||
|
||||
// 递归查找节点
|
||||
const findNodeByCode = (data, code) => {
|
||||
for (const item of data) {
|
||||
if (item.code === code) return item;
|
||||
if (item.children) {
|
||||
const result = findNodeByCode(item.children, code);
|
||||
if (result) return result;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
};
|
||||
/** 表单重置 */
|
||||
function reset() {
|
||||
form.value = {
|
||||
name: undefined,
|
||||
nameJson: undefined,
|
||||
menuName: undefined,
|
||||
age: undefined,
|
||||
genderEnum: undefined,
|
||||
typeCode: '01',
|
||||
idCard: undefined,
|
||||
phone: undefined,
|
||||
prfsEnum: undefined,
|
||||
address: undefined,
|
||||
tempFlag: undefined,
|
||||
countryCode: undefined,
|
||||
bloodRh: undefined,
|
||||
bloodAbo: undefined,
|
||||
nationalityCode: undefined,
|
||||
deceasedDate: undefined,
|
||||
linkName: undefined,
|
||||
linkRelationCode: undefined,
|
||||
linkTelcom: undefined,
|
||||
workCompany: undefined,
|
||||
addressCity: undefined,
|
||||
addressDistrict: undefined,
|
||||
addressStreet: undefined,
|
||||
addressProvince: undefined,
|
||||
maritalStatusEnum: undefined,
|
||||
busNo: undefined,
|
||||
organizationId: undefined,
|
||||
};
|
||||
proxy.resetForm('patientRef');
|
||||
}
|
||||
defineExpose({ form });
|
||||
</script>
|
||||
<style scoped>
|
||||
.el-form--inline .el-form-item {
|
||||
display: inline-flex;
|
||||
vertical-align: middle;
|
||||
margin-right: 10px !important;
|
||||
}
|
||||
|
||||
/* 使用深度选择器 */
|
||||
.custom-label-spacing :deep(.el-form-item__label) {
|
||||
line-height: 1.2; /* 调整行间距 */
|
||||
margin-bottom: 4px; /* 调整 label 和输入框之间的间距 */
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,317 @@
|
||||
<template>
|
||||
<el-dialog
|
||||
v-model="dialogVisible"
|
||||
top="6vh"
|
||||
:width="width"
|
||||
:title="props.title"
|
||||
@open="openAct"
|
||||
@closed="closedAct"
|
||||
:z-index="20"
|
||||
destroy-on-close
|
||||
>
|
||||
<el-scrollbar height="650px">
|
||||
<PatientInfoComp
|
||||
:patientInfo="props.patientInfo"
|
||||
:registrationType="props.registrationType"
|
||||
:initOptions="initOptions"
|
||||
:noFile="noFile"
|
||||
ref="patientInfoRef"
|
||||
@onChangFeeType="onChangFeeType"
|
||||
/>
|
||||
<!-- <PatientRelationList
|
||||
class="relationList"
|
||||
:patCode="patientInfo.code"
|
||||
ref="PatientRelationListRef"
|
||||
/> -->
|
||||
<!--联系人组件 -->
|
||||
<RegisterForm
|
||||
:code="code"
|
||||
ref="RegisterFormRef"
|
||||
:patientInfo="patientApiInfo"
|
||||
:initOptions="initOptions"
|
||||
:alreadyEdit="alreadyEdit"
|
||||
:inHospitalInfo="inHospitalInfo"
|
||||
:noFile="noFile"
|
||||
/>
|
||||
</el-scrollbar>
|
||||
<template v-slot:footer>
|
||||
<div class="advance-container">
|
||||
<el-space>
|
||||
<div>缴费预交金</div>
|
||||
<el-input
|
||||
style="width: 142px"
|
||||
placeholder="请输入"
|
||||
v-model="advance"
|
||||
@input="handleAdvanceInput"
|
||||
:formatter="handleAdvanceFormatter"
|
||||
:parser="handleAdvanceParser"
|
||||
></el-input>
|
||||
<div
|
||||
class="feeType"
|
||||
:class="currentFeeType == typeitem.type ? 'activeFeeType' : ''"
|
||||
v-for="typeitem in feeTypeOptions"
|
||||
:key="typeitem.type"
|
||||
@click="currentFeeType = typeitem.type"
|
||||
>
|
||||
<svg-icon
|
||||
:icon-class="typeitem.type"
|
||||
:color="currentFeeType == typeitem.type ? '#13C0B3' : '#666666'"
|
||||
height="18px"
|
||||
width="18px"
|
||||
style="margin-right: 4px"
|
||||
/>
|
||||
{{ typeitem.label }}
|
||||
</div>
|
||||
</el-space>
|
||||
</div>
|
||||
<el-button size="fixed" class="margin-left-auto" @click="cancelAct">取消 </el-button>
|
||||
<el-button size="fixed" type="primary" @click="handleSubmit">登记</el-button>
|
||||
<!-- <hip-button size="fixed" type="primary" @click="supplementMi">医保登记</hip-button> -->
|
||||
<!-- <AdvancePayment
|
||||
v-model="advancePaymentVisible"
|
||||
@submitOk="advancePaymentSubmitOk"
|
||||
:money="advance"3
|
||||
/> -->
|
||||
</template>
|
||||
</el-dialog>
|
||||
</template>
|
||||
<script setup>
|
||||
const { proxy } = getCurrentInstance();
|
||||
import { ElMessageBox } from 'element-plus';
|
||||
import PatientInfoComp from './patientInfo.vue';
|
||||
import RegisterForm from './registerForm.vue';
|
||||
import { noFilesRegister, registerInHospital, getInit } from './api';
|
||||
const emits = defineEmits(['okAct', 'cancelAct']);
|
||||
|
||||
const props = defineProps({
|
||||
title: '',
|
||||
registrationType: {
|
||||
type: [String, Boolean, Number], // 根据实际类型调整
|
||||
default: null, // 或者 false、'' 等
|
||||
},
|
||||
patientInfo: {
|
||||
type: Object,
|
||||
},
|
||||
inHospitalInfo: {
|
||||
type: Object,
|
||||
},
|
||||
alreadyEdit: {
|
||||
type: Boolean,
|
||||
default: false,
|
||||
},
|
||||
noFile: {
|
||||
type: Boolean,
|
||||
default: false,
|
||||
},
|
||||
});
|
||||
|
||||
watch(
|
||||
() => props.registrationType,
|
||||
(newValue) => {
|
||||
console.log('registrationType changed:', newValue);
|
||||
},
|
||||
{ immediate: true }
|
||||
);
|
||||
|
||||
const dialogVisible = defineModel('dialogVisible', {
|
||||
type: Boolean,
|
||||
default: false,
|
||||
});
|
||||
const code = defineModel('code');
|
||||
import { ElMessage } from 'element-plus';
|
||||
const width = '1128px';
|
||||
const patientApiInfo = ref({});
|
||||
const initOptions = ref({});
|
||||
|
||||
/* 取消 */
|
||||
const cancelAct = () => {
|
||||
emits('cancelAct');
|
||||
};
|
||||
const patientInfoRef = ref();
|
||||
|
||||
/* 预交金 */
|
||||
const advancePaymentVisible = ref(false);
|
||||
/* 保存 */
|
||||
const handleSubmit = () => {
|
||||
let params = {};
|
||||
if (props.noFile) {
|
||||
RegisterFormRef.value.validateData(async () => {
|
||||
params.inHospitalInfo = RegisterFormRef.value.submitForm;
|
||||
params.patientInformation = patientInfoRef.value.getPatientForm();
|
||||
if (params.patientInformation.idCard) {
|
||||
// 验证身份证号长度是否为18位
|
||||
const idCard = params.patientInformation.idCard.toString();
|
||||
if (idCard.length === 18) {
|
||||
params.patientInformation.birthDate =
|
||||
idCard.substring(6, 10) +
|
||||
'-' +
|
||||
idCard.substring(10, 12) +
|
||||
'-' +
|
||||
idCard.substring(12, 14);
|
||||
}
|
||||
}
|
||||
console.log('params', params);
|
||||
params.inHospitalInfo.balanceAmount = advance.value;
|
||||
const performRegistration = () => {
|
||||
noFilesRegister(params).then((res) => {
|
||||
if (res.code == 200) {
|
||||
emits('okAct');
|
||||
ElMessage.success(res.msg);
|
||||
advancePaymentVisible.value = true;
|
||||
} else {
|
||||
ElMessage.error(res.msg);
|
||||
}
|
||||
});
|
||||
};
|
||||
if (advance.value == 0) {
|
||||
ElMessageBox.confirm('住院预交金额未填写,确认登记吗', '提示', {
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
type: 'warning',
|
||||
})
|
||||
.then(() => {
|
||||
performRegistration();
|
||||
})
|
||||
.catch(() => {});
|
||||
} else {
|
||||
performRegistration();
|
||||
}
|
||||
});
|
||||
} else {
|
||||
params.balanceAmount = advance.value;
|
||||
params.patientId = props.patientInfo.patientId;
|
||||
RegisterFormRef.value.validateData(async () => {
|
||||
params = { ...params, ...RegisterFormRef.value.submitForm };
|
||||
console.log('params', params);
|
||||
const performRegistration = () => {
|
||||
registerInHospital(params).then((res) => {
|
||||
if (res.code == 200) {
|
||||
emits('okAct');
|
||||
ElMessage.success(res.msg);
|
||||
advancePaymentVisible.value = true;
|
||||
} else {
|
||||
ElMessage.error(res.msg);
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
if (advance.value == 0) {
|
||||
ElMessageBox.confirm('住院预交金额未填写,确认登记吗', '提示', {
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
type: 'warning',
|
||||
})
|
||||
.then(() => {
|
||||
performRegistration();
|
||||
})
|
||||
.catch(() => {});
|
||||
} else {
|
||||
performRegistration();
|
||||
}
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
const openAct = () => {
|
||||
console.log(props.patientInfo, 'patientRegister.vue');
|
||||
console.log(props.inHospitalInfo, 'inHospitalInfo.vue');
|
||||
/* 初始化数据 */
|
||||
advance.value = props.inHospitalInfo.balanceAmount || 0;
|
||||
advancePaymentVisible.value = false;
|
||||
RegisterFormRef.value.init();
|
||||
};
|
||||
const closedAct = () => {
|
||||
dialogVisible.value = false;
|
||||
if (patientInfoRef.value?.isEditing) {
|
||||
patientInfoRef.value.isEditing = false;
|
||||
}
|
||||
};
|
||||
|
||||
onMounted(() => {
|
||||
getInit().then((res) => {
|
||||
initOptions.value = res.data;
|
||||
});
|
||||
});
|
||||
|
||||
/* 登记 */
|
||||
const RegisterFormRef = ref();
|
||||
|
||||
const feeTypeOptions = reactive([
|
||||
{
|
||||
type: 'hipCash',
|
||||
label: '现金',
|
||||
},
|
||||
{
|
||||
type: 'hipAlipay',
|
||||
label: '支付宝',
|
||||
},
|
||||
{
|
||||
type: 'wechat',
|
||||
label: '微信',
|
||||
},
|
||||
{
|
||||
type: 'hipPayCard',
|
||||
label: '银行卡',
|
||||
},
|
||||
]);
|
||||
const advance = ref('0.00');
|
||||
const currentFeeType = ref('hipCash');
|
||||
/* 预交金录入框格式 */
|
||||
const handleAdvanceInput = (value) => {
|
||||
if (value.length === 1 && value === '.') {
|
||||
value = '0.';
|
||||
} else {
|
||||
advance.value = value.replace(/[^\d.]/g, '').replace(/^(\d*\.\d{2}).*$/, '$1');
|
||||
}
|
||||
};
|
||||
const handleAdvanceFormatter = (value) => {
|
||||
return `¥ ${value}`;
|
||||
};
|
||||
const handleAdvanceParser = (value) => {
|
||||
return value.replace(/\$\s?|(,*)/g, '');
|
||||
};
|
||||
const medicalInsuranceVisible = ref(false);
|
||||
const medicalInsuranceTitle = ref('');
|
||||
|
||||
/* 患者费别变更 */
|
||||
const onChangFeeType = () => {
|
||||
medicalInsuranceTitle.value = '医保信息'; //医保信息、医保登记
|
||||
medicalInsuranceVisible.value = true;
|
||||
};
|
||||
|
||||
/* */
|
||||
</script>
|
||||
<style lang="scss" scoped>
|
||||
.patientRegister-container {
|
||||
height: 700px;
|
||||
overflow-y: auto;
|
||||
}
|
||||
|
||||
.advance-container {
|
||||
width: 660px;
|
||||
display: flex;
|
||||
|
||||
.feeType {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
height: 32px;
|
||||
padding: 0px 8px;
|
||||
color: #666666;
|
||||
border-radius: 4px;
|
||||
cursor: pointer;
|
||||
|
||||
:deep(.svg-icon) {
|
||||
color: #666666;
|
||||
}
|
||||
}
|
||||
|
||||
.activeFeeType {
|
||||
color: #13c0b3;
|
||||
background: rgba(19, 192, 179, 0.1);
|
||||
|
||||
:deep(.svg-icon) {
|
||||
color: #13c0b3;
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,440 @@
|
||||
<template>
|
||||
<div class="registerForm-container">
|
||||
<div class="operate">
|
||||
<div>住院信息</div>
|
||||
</div>
|
||||
<el-form
|
||||
class="register-from"
|
||||
:model="submitForm"
|
||||
style="padding-left: 8px"
|
||||
ref="registerRef"
|
||||
label-width="80px"
|
||||
:rules="rules"
|
||||
>
|
||||
<el-row :gutter="8">
|
||||
<el-col :span="6">
|
||||
<el-form-item label="住院号:" prop="encounterBusNo">
|
||||
{{ submitForm.busNo ? submitForm.busNo : '-' }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<el-form-item label="住院次数:" prop="hospitalizationCount" autocomplete="off">
|
||||
{{ submitForm.inHospitalCount }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<el-form-item label="入院科室" prop="inHospitalOrgId">
|
||||
<el-tree-select
|
||||
clearable
|
||||
style="width: 100%"
|
||||
v-model="submitForm.inHospitalOrgId"
|
||||
filterable
|
||||
:data="organization"
|
||||
:props="{
|
||||
value: 'id',
|
||||
label: 'name',
|
||||
children: 'children',
|
||||
}"
|
||||
value-key="id"
|
||||
check-strictly
|
||||
:check-strictly-except-leaf="false"
|
||||
:default-expand-all="true"
|
||||
placeholder="请选择入院科室"
|
||||
@change="handleChange"
|
||||
@node-click="handleNodeClick"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<el-form-item label="入院病区" prop="wardLocationId">
|
||||
<el-select :disabled="props.alreadyEdit" v-model="submitForm.wardLocationId">
|
||||
<el-option
|
||||
v-for="item in wardListOptions"
|
||||
:key="item.id"
|
||||
:label="item.name"
|
||||
:value="item.id"
|
||||
@click="handleWardClick(item)"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<el-form-item label="床位数:" prop="bedCount">
|
||||
{{
|
||||
submitForm.totalBedsNum ? submitForm.idleBedsNum + '/' + submitForm.totalBedsNum : '-'
|
||||
}}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<el-form-item label="门诊医生" prop="ambDoctorPractitionerName">
|
||||
<el-input disabled v-model="submitForm.ambDoctorPractitionerName" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<el-form-item label="诊断类别" prop="medTypeCode">
|
||||
<el-select
|
||||
v-model="submitForm.medTypeCode"
|
||||
placeholder="诊断类别"
|
||||
clearable
|
||||
filterable
|
||||
@change="
|
||||
(value) => {
|
||||
submitForm.ybClassEnum = value;
|
||||
}
|
||||
"
|
||||
>
|
||||
<el-option
|
||||
v-for="item in med_type"
|
||||
:key="item.value"
|
||||
:label="item.label"
|
||||
:value="item.value"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="6" v-if="!props.noFile">
|
||||
<el-form-item label="入院诊断" prop="ambDiagnosisName">
|
||||
<el-input v-model="submitForm.ambDiagnosisName" disabled />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="6" v-else>
|
||||
<el-form-item label="入院诊断" prop="diagnosisDefinitionId">
|
||||
<el-select
|
||||
v-model="submitForm.diagnosisDefinitionId"
|
||||
placeholder="入院诊断"
|
||||
clearable
|
||||
filterable
|
||||
remote
|
||||
:remote-method="getDiagnosisInfo"
|
||||
>
|
||||
<el-option
|
||||
v-for="item in diagnosisDefinitionList"
|
||||
:key="item.id"
|
||||
:label="item.name"
|
||||
:value="item.id"
|
||||
@click="handleDiagnosisChange(item)"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="6" v-if="props.noFile">
|
||||
<el-form-item label="诊断描述" prop="diagnosisDesc">
|
||||
<el-input v-model="submitForm.diagnosisDesc" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<el-form-item label="患者病情">
|
||||
<el-select v-model="submitForm.priorityEnum">
|
||||
<el-option
|
||||
v-for="item in props.initOptions.priorityEnumList"
|
||||
:key="item.value"
|
||||
:label="item.info"
|
||||
:value="item.value"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<el-form-item label="入院类型" prop="admitSourceCode">
|
||||
<el-select v-model="submitForm.admitSourceCode">
|
||||
<el-option
|
||||
v-for="item in admit_source_code"
|
||||
:key="item.value"
|
||||
:label="item.label"
|
||||
:value="item.value"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<el-form-item label="入院方式" prop="inWayCode">
|
||||
<el-select v-model="submitForm.inWayCode">
|
||||
<el-option
|
||||
v-for="item in in_way_code"
|
||||
:key="item.value"
|
||||
:label="item.label"
|
||||
:value="item.value"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<el-form-item label="费用性质">
|
||||
<el-select
|
||||
v-model="submitForm.contractNo"
|
||||
placeholder="费用性质"
|
||||
clearable
|
||||
@change="getValue"
|
||||
>
|
||||
<el-option
|
||||
v-for="item in contractList"
|
||||
:key="item.busNo"
|
||||
:label="item.contractName"
|
||||
:value="item.busNo"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<el-form-item label="入院日期" prop="startTime">
|
||||
<el-date-picker
|
||||
v-model="submitForm.startTime"
|
||||
value-format="YYYY-MM-DD HH:mm:ss"
|
||||
type="date"
|
||||
placeholder="请选择日期"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-form>
|
||||
</div>
|
||||
</template>
|
||||
<script setup>
|
||||
import {
|
||||
getInit,
|
||||
getOrgList,
|
||||
wardList,
|
||||
diagnosisInit,
|
||||
getBedInfo,
|
||||
getContractList,
|
||||
getDiagnosisDefinitionList,
|
||||
} from './api';
|
||||
const { proxy } = getCurrentInstance();
|
||||
const { in_way_code, admit_source_code, med_type } = proxy.useDict(
|
||||
'in_way_code',
|
||||
'admit_source_code',
|
||||
'med_type'
|
||||
);
|
||||
|
||||
import { formatDateStr } from '@/utils';
|
||||
const emits = defineEmits([]);
|
||||
const props = defineProps({
|
||||
patientInfo: {
|
||||
type: Object,
|
||||
require: true,
|
||||
default: () => ({}),
|
||||
},
|
||||
inHospitalInfo: {
|
||||
type: Object,
|
||||
require: true,
|
||||
default: () => ({}),
|
||||
},
|
||||
initOptions: {
|
||||
type: Object,
|
||||
require: true,
|
||||
default: () => ({}),
|
||||
},
|
||||
alreadyEdit: {
|
||||
type: Boolean,
|
||||
default: false,
|
||||
},
|
||||
noFile: {
|
||||
type: Boolean,
|
||||
default: false,
|
||||
},
|
||||
});
|
||||
|
||||
const organization = ref([]);
|
||||
const wardListOptions = ref([]);
|
||||
const contractList = ref([]);
|
||||
const verificationStatusOptions = ref([]);
|
||||
const diagnosisDefinitionList = ref([]);
|
||||
const rules = reactive({
|
||||
inHospitalOrgId: [
|
||||
{
|
||||
required: true,
|
||||
message: '入院科室未填写',
|
||||
trigger: ['blur', 'change'],
|
||||
},
|
||||
],
|
||||
wardLocationId: [
|
||||
{
|
||||
required: true,
|
||||
message: '入院病区未填写',
|
||||
trigger: ['blur', 'change'],
|
||||
},
|
||||
],
|
||||
startTime: [
|
||||
{
|
||||
required: true,
|
||||
message: '入院日期未填写',
|
||||
trigger: ['blur', 'change'],
|
||||
},
|
||||
],
|
||||
diagnosisDefinitionId: [
|
||||
{
|
||||
required: true,
|
||||
message: '入院诊断未填写',
|
||||
trigger: ['blur', 'change'],
|
||||
},
|
||||
],
|
||||
diagnosisDesc: [
|
||||
{
|
||||
required: true,
|
||||
message: '诊断描述未填写',
|
||||
trigger: ['blur', 'change'],
|
||||
},
|
||||
],
|
||||
});
|
||||
|
||||
/* 提交表单 */
|
||||
const submitForm = reactive({
|
||||
inHospitalOrgId: props.inHospitalInfo.inHospitalOrgId,
|
||||
ambDoctorPractitionerName: props.inHospitalInfo.ambDoctorPractitionerName,
|
||||
wardLocationId: props.inHospitalInfo.wardLocationId, // 入院护理组编码
|
||||
admitSourceCode: '', // 患者入院类型(字典:PatientSource)
|
||||
inWayCode: '', // 入院方式(字典InpWay)
|
||||
startTime: formatDateStr(new Date(), 'YYYY-MM-DD HH:mm:ss'), // 入院日期
|
||||
priorityEnum: props.inHospitalInfo.priorityEnum, // 患者病情(字典:PatAdmCondition)
|
||||
ambDiagnosisName: props.inHospitalInfo.ambDiagnosisName,
|
||||
medTypeCode: '21',
|
||||
});
|
||||
/* 科室 病区 */
|
||||
watch(
|
||||
() => submitForm.inDocterWorkGroupCode,
|
||||
(newValue) => {
|
||||
if (newValue) {
|
||||
if (newValue == '') {
|
||||
submitForm.wardLocationId = '';
|
||||
}
|
||||
} else {
|
||||
submitForm.wardLocationId = '';
|
||||
}
|
||||
}
|
||||
);
|
||||
|
||||
watch(
|
||||
() => submitForm.inNurseDeptCode,
|
||||
(newValue) => {
|
||||
if (newValue) {
|
||||
getBedInfo(newValue);
|
||||
}
|
||||
}
|
||||
);
|
||||
|
||||
onMounted(() => {
|
||||
getInitOptions();
|
||||
setValue();
|
||||
});
|
||||
|
||||
function handleWardClick(item) {
|
||||
submitForm.wardBusNo = item.busNo;
|
||||
getBedInfo(submitForm.wardBusNo).then((res) => {
|
||||
submitForm.totalBedsNum = res.data.totalBedsNum;
|
||||
submitForm.idleBedsNum = res.data.idleBedsNum;
|
||||
});
|
||||
}
|
||||
|
||||
function getInitOptions() {
|
||||
getOrgList().then((res) => {
|
||||
organization.value = res.data.records;
|
||||
});
|
||||
if (!props.noFile) {
|
||||
wardList().then((res) => {
|
||||
wardListOptions.value = res.data;
|
||||
});
|
||||
}
|
||||
diagnosisInit().then((res) => {
|
||||
verificationStatusOptions.value = res.data.verificationStatusOptions;
|
||||
});
|
||||
getContractList().then((response) => {
|
||||
contractList.value = response.data;
|
||||
setValue();
|
||||
});
|
||||
getDiagnosisInfo(undefined);
|
||||
}
|
||||
function getDiagnosisInfo(value) {
|
||||
getDiagnosisDefinitionList({ pageSize: 500, pageNo: 1, searchKey: value }).then((res) => {
|
||||
diagnosisDefinitionList.value = res.data.records;
|
||||
});
|
||||
}
|
||||
|
||||
function handleNodeClick(orgInfo) {
|
||||
wardList({ orgId: orgInfo.id }).then((res) => {
|
||||
wardListOptions.value = res.data;
|
||||
});
|
||||
}
|
||||
|
||||
function handleChange(value) {
|
||||
if (!value) {
|
||||
wardListOptions.value = [];
|
||||
submitForm.wardLocationId = undefined;
|
||||
}
|
||||
}
|
||||
|
||||
function handleDiagnosisChange(item) {
|
||||
submitForm.diagnosisYbNo = item.ybNo;
|
||||
submitForm.diagnosisDefinitionId = item.id;
|
||||
}
|
||||
|
||||
function setValue() {
|
||||
submitForm.encounterId = props.inHospitalInfo?.encounterId;
|
||||
submitForm.busNo = props.inHospitalInfo?.busNo;
|
||||
submitForm.contractNo = props.inHospitalInfo?.contractNo;
|
||||
submitForm.inHospitalCount = props.inHospitalInfo?.inHospitalCount;
|
||||
submitForm.inHospitalOrgId = props.inHospitalInfo?.inHospitalOrgId;
|
||||
submitForm.inHospitalOrgName = props.inHospitalInfo?.inHospitalOrgName;
|
||||
submitForm.wardLocationId = props.inHospitalInfo?.wardLocationId;
|
||||
submitForm.wardName = props.inHospitalInfo?.wardName;
|
||||
submitForm.wardBusNo = props.inHospitalInfo?.wardBusNo;
|
||||
submitForm.totalBedsNum = props.inHospitalInfo?.totalBedsNum;
|
||||
submitForm.idleBedsNum = props.inHospitalInfo?.idleBedsNum;
|
||||
submitForm.ambEncounterId = props.inHospitalInfo?.ambEncounterId;
|
||||
submitForm.ambDoctorPractitionerId = props.inHospitalInfo?.ambDoctorPractitionerId;
|
||||
submitForm.ambDoctorPractitionerName = props.inHospitalInfo?.ambDoctorPractitionerName;
|
||||
submitForm.ambDiagnosisName = props.inHospitalInfo?.ambDiagnosisName;
|
||||
submitForm.priorityEnum = props.inHospitalInfo?.priorityEnum;
|
||||
submitForm.priorityEnum_enumText = props.inHospitalInfo?.priorityEnum_enumText;
|
||||
submitForm.admitSourceCode = props.inHospitalInfo?.admitSourceCode;
|
||||
submitForm.admitSourceCode_dictText = props.inHospitalInfo?.admitSourceCode_dictText;
|
||||
submitForm.inWayCode = props.inHospitalInfo?.inWayCode;
|
||||
submitForm.inWayCode_dictText = props.inHospitalInfo?.inWayCode_dictText;
|
||||
}
|
||||
|
||||
const registerRef = ref();
|
||||
/* 登记 */
|
||||
const validateData = async (callback) => {
|
||||
if (!registerRef.value) return false;
|
||||
registerRef.value.validate((valid) => {
|
||||
if (valid) {
|
||||
callback();
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
const init = () => {
|
||||
submitForm.inDocterWorkGroupCode = '';
|
||||
submitForm.wardLocationId = '';
|
||||
};
|
||||
defineExpose({ validateData, submitForm, init });
|
||||
</script>
|
||||
<style lang="scss" scoped>
|
||||
.registerForm-container {
|
||||
margin-top: 16px;
|
||||
|
||||
.operate {
|
||||
background: rgba(37, 109, 149, 0.05);
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
height: 32px;
|
||||
border-radius: 4px 4px 0px 0px;
|
||||
padding-left: 16px;
|
||||
color: var(--hip-color-primary-light);
|
||||
font-weight: bold;
|
||||
margin-bottom: 8px;
|
||||
}
|
||||
|
||||
.register-from {
|
||||
padding: 0 8px;
|
||||
}
|
||||
|
||||
:deep(.el-form-item) {
|
||||
width: 100%;
|
||||
margin-right: 0px;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
Reference in New Issue
Block a user