696 [收费工作站-住院登记] 优化姓名搜索框,增设“身份证号”与“申请时间段”检索条件,及列表字段补充显示

This commit is contained in:
wangjian963
2026-06-17 15:01:38 +08:00
parent c49c9229a8
commit b6eec300a9
8 changed files with 83 additions and 11 deletions

View File

@@ -39,7 +39,7 @@ public interface IInHospitalRegisterAppService {
*/ */
IPage<InHospitalRegisterQueryDto> getRegisterInfo(InHospitalRegisterQueryDto inHospitalRegisterQueryDto, IPage<InHospitalRegisterQueryDto> getRegisterInfo(InHospitalRegisterQueryDto inHospitalRegisterQueryDto,
String searchKey, String registeredFlag, Integer pageNo, Integer pageSize, String searchKey, String registeredFlag, Integer pageNo, Integer pageSize,
Date startTime, Date endTime, Long organizationId, HttpServletRequest request); Date startTime, Date endTime, Long organizationId, String idCard, HttpServletRequest request);
/** /**
* 查询患者基本信息 * 查询患者基本信息

View File

@@ -174,16 +174,19 @@ public class InHospitalRegisterAppServiceImpl implements IInHospitalRegisterAppS
@Override @Override
public IPage<InHospitalRegisterQueryDto> getRegisterInfo(InHospitalRegisterQueryDto inHospitalRegisterQueryDto, public IPage<InHospitalRegisterQueryDto> getRegisterInfo(InHospitalRegisterQueryDto inHospitalRegisterQueryDto,
String searchKey, String registeredFlag, Integer pageNo, Integer pageSize, String searchKey, String registeredFlag, Integer pageNo, Integer pageSize,
Date startTime, Date endTime, Long organizationId, HttpServletRequest request) { Date startTime, Date endTime, Long organizationId, String idCard, HttpServletRequest request) {
Integer encounterStatus = EncounterZyStatus.TO_BE_REGISTERED.getValue(); // 待登记 Integer encounterStatus = EncounterZyStatus.TO_BE_REGISTERED.getValue(); // 待登记
// startTime/endTime 直接传给 Mapper XML 参数,不通过 QueryWrapper
inHospitalRegisterQueryDto.setStartTime(null);
inHospitalRegisterQueryDto.setEndTime(null);
// 构建查询条件 // 构建查询条件
QueryWrapper<InHospitalRegisterQueryDto> queryWrapper QueryWrapper<InHospitalRegisterQueryDto> queryWrapper
= HisQueryUtils.buildQueryWrapper(inHospitalRegisterQueryDto, searchKey, = HisQueryUtils.buildQueryWrapper(inHospitalRegisterQueryDto, searchKey,
new HashSet<>(Arrays.asList("registrar", "source_name", "patient_name", "id_card")), request); new HashSet<>(Arrays.asList("registrar", "source_name", "patient_name")), request);
IPage<InHospitalRegisterQueryDto> inHospitalRegisterInfo = inHospitalRegisterAppMapper IPage<InHospitalRegisterQueryDto> inHospitalRegisterInfo = inHospitalRegisterAppMapper
.getInHospitalRegisterInfo(new Page<>(pageNo, pageSize), EncounterClass.IMP.getValue(), encounterStatus, .getInHospitalRegisterInfo(new Page<>(pageNo, pageSize), EncounterClass.IMP.getValue(), encounterStatus,
registeredFlag, LocationForm.WARD.getValue(), startTime, endTime, organizationId, registeredFlag, LocationForm.WARD.getValue(), startTime, endTime, organizationId, idCard,
queryWrapper); queryWrapper);
inHospitalRegisterInfo.getRecords().forEach(e -> { inHospitalRegisterInfo.getRecords().forEach(e -> {
// 性别 // 性别

View File

@@ -8,6 +8,7 @@ import com.healthlink.his.web.inhospitalcharge.appservice.IInHospitalRegisterApp
import com.healthlink.his.web.inhospitalcharge.dto.*; import com.healthlink.his.web.inhospitalcharge.dto.*;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.format.annotation.DateTimeFormat;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import java.util.Date; import java.util.Date;
@@ -67,12 +68,13 @@ public class InHospitalRegisterController {
@RequestParam(value = "registeredFlag") String registeredFlag, @RequestParam(value = "registeredFlag") String registeredFlag,
@RequestParam(value = "pageNo", defaultValue = "1") Integer pageNo, @RequestParam(value = "pageNo", defaultValue = "1") Integer pageNo,
@RequestParam(value = "pageSize", defaultValue = "10") Integer pageSize, @RequestParam(value = "pageSize", defaultValue = "10") Integer pageSize,
@RequestParam(value = "startTime", required = false) Date startTime, @RequestParam(value = "startTime", required = false) @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") Date startTime,
@RequestParam(value = "endTime", required = false) Date endTime, @RequestParam(value = "endTime", required = false) @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") Date endTime,
@RequestParam(value = "organizationId", required = false) Long organizationId, @RequestParam(value = "organizationId", required = false) Long organizationId,
@RequestParam(value = "idCard", required = false) String idCard,
HttpServletRequest request) { HttpServletRequest request) {
return R.ok(iInHospitalRegisterAppService.getRegisterInfo(inHospitalRegisterQueryDto, searchKey, registeredFlag, return R.ok(iInHospitalRegisterAppService.getRegisterInfo(inHospitalRegisterQueryDto, searchKey, registeredFlag,
pageNo, pageSize, startTime, endTime, organizationId, request)); pageNo, pageSize, startTime, endTime, organizationId, idCard, request));
} }
/** /**

View File

@@ -120,4 +120,14 @@ public class InHospitalRegisterQueryDto {
*/ */
@JsonSerialize(using = ToStringSerializer.class) @JsonSerialize(using = ToStringSerializer.class)
private Long organizationId; private Long organizationId;
/**
* 身份证号
*/
private String idCard;
/**
* 入院科室名称
*/
private String organizationName;
} }

View File

@@ -39,6 +39,7 @@ public interface InHospitalRegisterAppMapper {
@Param("registeredFlag") String registeredFlag, @Param("formEnum") Integer formEnum, @Param("registeredFlag") String registeredFlag, @Param("formEnum") Integer formEnum,
@Param("startTime") Date startTime, @Param("endTime") Date endTime, @Param("startTime") Date startTime, @Param("endTime") Date endTime,
@Param("organizationId") Long organizationId, @Param("organizationId") Long organizationId,
@Param("idCard") String idCard,
@Param(Constants.WRAPPER) QueryWrapper<InHospitalRegisterQueryDto> queryWrapper); @Param(Constants.WRAPPER) QueryWrapper<InHospitalRegisterQueryDto> queryWrapper);
/** /**

View File

@@ -53,6 +53,9 @@
<if test="organizationId != null"> <if test="organizationId != null">
AND ae.organization_id = #{organizationId} AND ae.organization_id = #{organizationId}
</if> </if>
<if test="idCard != null and idCard != ''">
AND ap.id_card LIKE concat('%', #{idCard}, '%')
</if>
<if test='registeredFlag == "0"'> <if test='registeredFlag == "0"'>
AND ae.status_enum = #{encounterStatus} AND ae.status_enum = #{encounterStatus}
</if> </if>

View File

@@ -4,11 +4,29 @@
<el-space> <el-space>
<el-input <el-input
v-model="queryParams.searchKey" v-model="queryParams.searchKey"
style="max-width: 600px" style="width: 160px"
placeholder="请输入内容" placeholder="请输入患者姓名"
clearable
class="input-with-select" class="input-with-select"
@keydown.enter="handleQuery" @keydown.enter="handleQuery"
/> />
<el-input
v-model="queryParams.idCard"
style="width: 180px"
placeholder="请输入身份证号码"
clearable
@keydown.enter="handleQuery"
/>
<el-date-picker
v-model="dateRange"
type="daterange"
range-separator="~"
start-placeholder="开始日期"
end-placeholder="结束日期"
value-format="YYYY-MM-DD HH:mm:ss"
:default-time="[new Date(0, 0, 0, 0, 0, 0), new Date(0, 0, 0, 23, 59, 59)]"
style="width: 260px"
/>
<el-button @click="resetQuery"> <el-button @click="resetQuery">
重置 重置
</el-button> </el-button>
@@ -59,9 +77,15 @@
align="center" align="center"
> >
<template #default="scope"> <template #default="scope">
{{ scope.row.age ? `${scope.row.age}` : '-' }} {{ scope.row.age || '-' }}
</template> </template>
</vxe-column> </vxe-column>
<vxe-column
field="idCard"
min-width="160"
align="center"
title="身份证号"
/>
<vxe-column <vxe-column
align="center" align="center"
title="登记状态" title="登记状态"
@@ -88,6 +112,12 @@
align="center" align="center"
title="申请来源" title="申请来源"
/> />
<vxe-column
field="organizationName"
min-width="140"
align="center"
title="入院科室"
/>
<vxe-column <vxe-column
field="wardName" field="wardName"
min-width="120" min-width="120"
@@ -135,6 +165,7 @@
</div> </div>
</template> </template>
<script setup> <script setup>
import dayjs from 'dayjs';
import PatientRegister from './patientRegister.vue'; import PatientRegister from './patientRegister.vue';
import {getAdmissionPage, getInHospitalInfo, getPatientBasicInfo} from './api'; import {getAdmissionPage, getInHospitalInfo, getPatientBasicInfo} from './api';
import { ElMessage } from 'element-plus'; import { ElMessage } from 'element-plus';
@@ -146,10 +177,18 @@ const patient = ref({});
const inHospitalInfo = ref({}); const inHospitalInfo = ref({});
const noFile = ref(false); const noFile = ref(false);
const registrationType = ref(true); const registrationType = ref(true);
// 默认查询当前一周时间段
const dateRange = ref([
dayjs().subtract(7, 'day').format('YYYY-MM-DD HH:mm:ss'),
dayjs().format('YYYY-MM-DD HH:mm:ss'),
]);
const queryParams = ref({ const queryParams = ref({
pageNo: 1, pageNo: 1,
pageSize: 10, pageSize: 10,
searchKey: '', searchKey: '',
idCard: '',
registeredFlag: '0', registeredFlag: '0',
}); });
@@ -223,6 +262,13 @@ const doRegistering = async (row) => {
}; };
const getList = () => { const getList = () => {
if (dateRange.value && dateRange.value.length === 2) {
queryParams.value.startTime = dateRange.value[0];
queryParams.value.endTime = dateRange.value[1];
} else {
queryParams.value.startTime = '';
queryParams.value.endTime = '';
}
getAdmissionPage(queryParams.value).then((res) => { getAdmissionPage(queryParams.value).then((res) => {
treatHospitalizedData.value = res.data?.records || []; treatHospitalizedData.value = res.data?.records || [];
total.value = res.data?.total || 0; total.value = res.data?.total || 0;
@@ -236,10 +282,15 @@ function handleQuery() {
} }
function resetQuery() { function resetQuery() {
dateRange.value = [
dayjs().subtract(7, 'day').format('YYYY-MM-DD HH:mm:ss'),
dayjs().format('YYYY-MM-DD HH:mm:ss'),
];
queryParams.value = { queryParams.value = {
pageNo: 1, pageNo: 1,
pageSize: 10, pageSize: 10,
searchKey: '', searchKey: '',
idCard: '',
registeredFlag: '0', registeredFlag: '0',
}; };
getList(); getList();

View File

@@ -149,7 +149,9 @@ const router = useRouter();
const emits = defineEmits(['okAct', 'cancelAct']); const emits = defineEmits(['okAct', 'cancelAct']);
const props = defineProps({ const props = defineProps({
title: { type: String, default: '' }, title:
{ type: String, default: '' },
registrationType: { registrationType: {
type: [String, Boolean, Number], // 根据实际类型调整 type: [String, Boolean, Number], // 根据实际类型调整
default: null, // 或者 false、'' 等 default: null, // 或者 false、'' 等