feat(menu): 优化菜单路径唯一性校验并更新前端界面

- 在SysLoginController中添加optionMap数据返回
- 添加JSQLParser依赖支持MyBatis Plus功能
- 实现selectMenuByPathExcludeId方法用于排除当前菜单的路径唯一性校验
- 在SysMenuServiceImpl中添加日志记录并优化路径唯一性判断逻辑
- 在SysMenuMapper.xml中添加LIMIT 1限制并实现排除ID查询
- 在前端路由中注释患者管理相关路由配置
- 在用户store中添加optionMap配置项并优先从optionMap获取医院名称
- 重构检查项目设置页面的操作按钮样式为统一的圆形按钮设计
- 更新检查项目设置页面的导航栏样式和交互体验
- 优化门诊记录页面的搜索条件和表格展示功能
- 添加性别和状态筛选条件并改进数据加载逻辑
This commit is contained in:
2026-01-03 23:47:09 +08:00
parent 61f4020487
commit 0c35044231
54 changed files with 5871 additions and 510 deletions

View File

@@ -0,0 +1,111 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.openhis.administration.mapper.PractitionerPatientMapper">
<resultMap type="com.openhis.administration.domain.PractitionerPatient" id="PractitionerPatientResult">
<result property="id" column="id" />
<result property="practitionerId" column="practitioner_id" />
<result property="patientId" column="patient_id" />
<result property="relationshipType" column="relationship_type" />
<result property="organizationId" column="organization_id" />
<result property="startDate" column="start_date" />
<result property="endDate" column="end_date" />
<result property="status" column="status" />
<result property="remark" column="remark" />
<result property="tenantId" column="tenant_id" />
<result property="deleteFlag" column="delete_flag" />
<result property="createBy" column="create_by" />
<result property="createTime" column="create_time" />
<result property="updateBy" column="update_by" />
<result property="updateTime" column="update_time" />
</resultMap>
<sql id="selectPractitionerPatientVo">
select id, practitioner_id, patient_id, relationship_type, organization_id,
start_date, end_date, status, remark, tenant_id,
delete_flag, create_by, create_time, update_by, update_time
from adm_practitioner_patient
</sql>
<select id="selectPractitionerPatientList" parameterType="com.openhis.administration.domain.PractitionerPatient" resultMap="PractitionerPatientResult">
<include refid="selectPractitionerPatientVo"/>
<where>
delete_flag = '0'
<if test="practitionerId != null">
and practitioner_id = #{practitionerId}
</if>
<if test="patientId != null">
and patient_id = #{patientId}
</if>
<if test="relationshipType != null">
and relationship_type = #{relationshipType}
</if>
<if test="organizationId != null">
and organization_id = #{organizationId}
</if>
<if test="status != null">
and status = #{status}
</if>
</where>
order by create_time desc
</select>
<select id="selectPractitionerPatientById" parameterType="Long" resultMap="PractitionerPatientResult">
<include refid="selectPractitionerPatientVo"/>
where id = #{id} and delete_flag = '0'
</select>
<!-- 获取医生的所有有效患者(带详细信息) -->
<select id="getValidPatientsByPractitionerWithDetail" parameterType="Long" resultType="java.util.Map">
SELECT
pp.id as relationship_id,
pp.practitioner_id,
pp.patient_id,
pp.relationship_type,
pp.start_date,
pp.end_date,
pp.status,
pp.remark,
pt.name as patient_name,
pt.bus_no as patient_bus_no,
pt.gender_enum as patient_gender,
pt.phone as patient_phone,
pt.id_card as patient_id_card,
pt.birth_date as patient_birth_date
FROM adm_practitioner_patient pp
LEFT JOIN adm_patient pt ON pp.patient_id = pt.ID AND pt.delete_flag = '0'
WHERE pp.practitioner_id = #{practitionerId}
AND pp.status = 1
AND pp.delete_flag = '0'
ORDER BY pp.create_time DESC
</select>
<!-- 获取患者的所有有效医生(带详细信息) -->
<select id="getValidPractitionersByPatientWithDetail" parameterType="Long" resultType="java.util.Map">
SELECT
pp.id as relationship_id,
pp.practitioner_id,
pp.patient_id,
pp.relationship_type,
pp.start_date,
pp.end_date,
pp.status,
pp.remark,
prac.name as practitioner_name,
prac.bus_no as practitioner_bus_no,
prac.gender_enum as practitioner_gender,
prac.phone as practitioner_phone,
prac.dr_profttl_code as practitioner_title,
org.name as organization_name
FROM adm_practitioner_patient pp
LEFT JOIN adm_practitioner prac ON pp.practitioner_id = prac.ID AND prac.delete_flag = '0'
LEFT JOIN adm_organization org ON pp.organization_id = org.ID AND org.delete_flag = '0'
WHERE pp.patient_id = #{patientId}
AND pp.status = 1
AND pp.delete_flag = '0'
ORDER BY pp.relationship_type, pp.create_time DESC
</select>
</mapper>