feat(login): 添加租户名称获取功能并优化前端布局

- 在登录控制器中注入租户服务并获取租户名称信息
- 添加租户名称到登录响应结果中
- 更新样式变量定义侧边栏宽度和Logo高度
- 重构公告面板组件统一公告通知显示逻辑
- 简化公告类型图标和样式映射关系
- 更新侧边栏为垂直菜单布局并添加折叠功能
- 优化Logo组件显示租户名称和系统标题
- 调整导航栏布局结构和响应式样式
- 重构主应用容器样式和标签页显示逻辑
This commit is contained in:
2025-12-31 10:28:52 +08:00
parent 10e738edd9
commit 4d4828ea71
54 changed files with 3510 additions and 754 deletions

View File

@@ -0,0 +1,160 @@
package com.openhis.clinical.domain;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.core.common.core.domain.HisBaseEntity;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import java.math.BigDecimal;
import java.util.Date;
/**
* 手术管理Entity实体
*
* @author system
* @date 2025-12-30
*/
@Data
@TableName("cli_surgery")
@Accessors(chain = true)
@EqualsAndHashCode(callSuper = false)
public class Surgery extends HisBaseEntity {
/** ID */
@TableId(type = IdType.ASSIGN_ID)
@JsonSerialize(using = ToStringSerializer.class)
private Long id;
/** 手术编号 */
private String surgeryNo;
/** 患者ID */
@JsonSerialize(using = ToStringSerializer.class)
private Long patientId;
/** 就诊ID */
@JsonSerialize(using = ToStringSerializer.class)
private Long encounterId;
/** 手术名称 */
private String surgeryName;
/** 手术编码 */
private String surgeryCode;
/** 手术类型编码 */
private Integer surgeryTypeEnum;
/** 手术等级 */
private Integer surgeryLevel;
/** 手术状态 */
private Integer statusEnum;
/** 计划手术时间 */
private Date plannedTime;
/** 实际开始时间 */
private Date actualStartTime;
/** 实际结束时间 */
private Date actualEndTime;
/** 主刀医生ID */
@JsonSerialize(using = ToStringSerializer.class)
private Long mainSurgeonId;
/** 主刀医生姓名 */
private String mainSurgeonName;
/** 助手1 ID */
@JsonSerialize(using = ToStringSerializer.class)
private Long assistant1Id;
/** 助手1 姓名 */
private String assistant1Name;
/** 助手2 ID */
@JsonSerialize(using = ToStringSerializer.class)
private Long assistant2Id;
/** 助手2 姓名 */
private String assistant2Name;
/** 麻醉医生ID */
@JsonSerialize(using = ToStringSerializer.class)
private Long anesthetistId;
/** 麻醉医生姓名 */
private String anesthetistName;
/** 巡回护士ID */
@JsonSerialize(using = ToStringSerializer.class)
private Long scrubNurseId;
/** 巡回护士姓名 */
private String scrubNurseName;
/** 麻醉方式编码 */
private Integer anesthesiaTypeEnum;
/** 手术部位 */
private String bodySite;
/** 手术切口等级 */
private Integer incisionLevel;
/** 手术切口愈合等级 */
private Integer healingLevel;
/** 手术室 */
@JsonSerialize(using = ToStringSerializer.class)
private Long operatingRoomId;
/** 手术室名称 */
private String operatingRoomName;
/** 执行科室ID */
@JsonSerialize(using = ToStringSerializer.class)
private Long orgId;
/** 执行科室名称 */
private String orgName;
/** 术前诊断 */
private String preoperativeDiagnosis;
/** 术后诊断 */
private String postoperativeDiagnosis;
/** 手术经过描述 */
private String surgeryDescription;
/** 术后医嘱 */
private String postoperativeAdvice;
/** 并发症描述 */
private String complications;
/** 手术费用 */
private BigDecimal surgeryFee;
/** 麻醉费用 */
private BigDecimal anesthesiaFee;
/** 总费用 */
private BigDecimal totalFee;
/** 备注信息 */
private String remark;
/** 租户ID表不存在此字段仅用于继承基类 */
@TableField(exist = false)
private Integer tenantId;
}

View File

@@ -0,0 +1,42 @@
package com.openhis.clinical.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.openhis.clinical.domain.Surgery;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* 手术管理Mapper接口
*
* @author system
* @date 2025-12-30
*/
@Mapper
public interface SurgeryMapper extends BaseMapper<Surgery> {
/**
* 根据患者ID查询手术列表
*
* @param patientId 患者ID
* @return 手术列表
*/
List<Surgery> selectByPatientId(@Param("patientId") Long patientId);
/**
* 根据就诊ID查询手术列表
*
* @param encounterId 就诊ID
* @return 手术列表
*/
List<Surgery> selectByEncounterId(@Param("encounterId") Long encounterId);
/**
* 根据手术编号查询
*
* @param surgeryNo 手术编号
* @return 手术信息
*/
Surgery selectBySurgeryNo(@Param("surgeryNo") String surgeryNo);
}

View File

@@ -0,0 +1,72 @@
package com.openhis.clinical.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.openhis.clinical.domain.Surgery;
import java.util.List;
/**
* 手术管理Service接口
*
* @author system
* @date 2025-12-30
*/
public interface ISurgeryService extends IService<Surgery> {
/**
* 新增手术信息
*
* @param surgery 手术信息
* @return 手术ID
*/
Long insertSurgery(Surgery surgery);
/**
* 修改手术信息
*
* @param surgery 手术信息
* @return 结果
*/
boolean updateSurgery(Surgery surgery);
/**
* 删除手术信息
*
* @param id 手术ID
* @return 结果
*/
boolean deleteSurgery(Long id);
/**
* 根据ID查询手术信息
*
* @param id 手术ID
* @return 手术信息
*/
Surgery getSurgeryById(Long id);
/**
* 根据患者ID查询手术列表
*
* @param patientId 患者ID
* @return 手术列表
*/
List<Surgery> getSurgeryListByPatientId(Long patientId);
/**
* 根据就诊ID查询手术列表
*
* @param encounterId 就诊ID
* @return 手术列表
*/
List<Surgery> getSurgeryListByEncounterId(Long encounterId);
/**
* 更新手术状态
*
* @param id 手术ID
* @param statusEnum 状态
* @return 结果
*/
boolean updateSurgeryStatus(Long id, Integer statusEnum);
}

View File

@@ -0,0 +1,145 @@
package com.openhis.clinical.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.core.common.utils.AssignSeqUtil;
import com.openhis.clinical.domain.Surgery;
import com.openhis.clinical.mapper.SurgeryMapper;
import com.openhis.clinical.service.ISurgeryService;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.util.Date;
import java.util.List;
/**
* 手术管理Service业务层处理
*
* @author system
* @date 2025-12-30
*/
@Service
public class SurgeryServiceImpl extends ServiceImpl<SurgeryMapper, Surgery> implements ISurgeryService {
@Resource
private SurgeryMapper surgeryMapper;
@Resource
private AssignSeqUtil assignSeqUtil;
/**
* 新增手术信息
*
* @param surgery 手术信息
* @return 手术ID
*/
@Override
@Transactional(rollbackFor = Exception.class)
public Long insertSurgery(Surgery surgery) {
// 生成手术编号
String surgeryNo = assignSeqUtil.getSeq("SS", 10);
surgery.setSurgeryNo(surgeryNo);
surgery.setCreateTime(new Date());
surgery.setUpdateTime(new Date());
surgery.setDeleteFlag("0");
// 默认状态为待排期
if (surgery.getStatusEnum() == null) {
surgery.setStatusEnum(0);
}
surgeryMapper.insert(surgery);
return surgery.getId();
}
/**
* 修改手术信息
*
* @param surgery 手术信息
* @return 结果
*/
@Override
@Transactional(rollbackFor = Exception.class)
public boolean updateSurgery(Surgery surgery) {
surgery.setUpdateTime(new Date());
return surgeryMapper.updateById(surgery) > 0;
}
/**
* 删除手术信息
*
* @param id 手术ID
* @return 结果
*/
@Override
@Transactional(rollbackFor = Exception.class)
public boolean deleteSurgery(Long id) {
return surgeryMapper.deleteById(id) > 0;
}
/**
* 根据ID查询手术信息
*
* @param id 手术ID
* @return 手术信息
*/
@Override
public Surgery getSurgeryById(Long id) {
return surgeryMapper.selectById(id);
}
/**
* 根据患者ID查询手术列表
*
* @param patientId 患者ID
* @return 手术列表
*/
@Override
public List<Surgery> getSurgeryListByPatientId(Long patientId) {
LambdaQueryWrapper<Surgery> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(Surgery::getPatientId, patientId)
.eq(Surgery::getDeleteFlag, "0")
.orderByDesc(Surgery::getCreateTime);
return surgeryMapper.selectList(wrapper);
}
/**
* 根据就诊ID查询手术列表
*
* @param encounterId 就诊ID
* @return 手术列表
*/
@Override
public List<Surgery> getSurgeryListByEncounterId(Long encounterId) {
return surgeryMapper.selectByEncounterId(encounterId);
}
/**
* 更新手术状态
*
* @param id 手术ID
* @param statusEnum 状态
* @return 结果
*/
@Override
@Transactional(rollbackFor = Exception.class)
public boolean updateSurgeryStatus(Long id, Integer statusEnum) {
Surgery surgery = new Surgery();
surgery.setId(id);
surgery.setStatusEnum(statusEnum);
surgery.setUpdateTime(new Date());
// 如果状态为手术中,更新开始时间
if (statusEnum == 2) {
surgery.setActualStartTime(new Date());
}
// 如果状态为已完成,更新结束时间
if (statusEnum == 3) {
surgery.setActualEndTime(new Date());
}
return surgeryMapper.updateById(surgery) > 0;
}
}