From 1ac9b5ae0bd43bacee4f7dfe428399af58eba84e Mon Sep 17 00:00:00 2001 From: chenqi Date: Tue, 30 Dec 2025 16:52:01 +0800 Subject: [PATCH] =?UTF-8?q?feat(organization):=20=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=E7=A7=91=E5=AE=A4=E7=AE=A1=E7=90=86=E6=9F=A5=E8=AF=A2=E8=BF=87?= =?UTF-8?q?=E6=BB=A4=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 修复api.js中params参数拼写错误 - 添加科室名称、类型、分类的查询表单 - 实现搜索和重置功能 - 集成分页组件并修正页码参数映射 - 在后端服务中添加查询条件过滤逻辑 - 支持按科室名称、类型、分类进行条件查询 - 实现动态排序功能并修复分页查询逻辑 --- .../appservice/IOrganizationAppService.java | 9 ++- .../impl/OrganizationAppServiceImpl.java | 28 +++++-- .../controller/OrganizationController.java | 11 ++- .../organization/components/api.js | 2 +- .../views/basicmanage/organization/index.vue | 79 +++++++++++++++++-- 5 files changed, 111 insertions(+), 18 deletions(-) diff --git a/openhis-server-new/openhis-application/src/main/java/com/openhis/web/basedatamanage/appservice/IOrganizationAppService.java b/openhis-server-new/openhis-application/src/main/java/com/openhis/web/basedatamanage/appservice/IOrganizationAppService.java index c1fd6dac..094d9023 100644 --- a/openhis-server-new/openhis-application/src/main/java/com/openhis/web/basedatamanage/appservice/IOrganizationAppService.java +++ b/openhis-server-new/openhis-application/src/main/java/com/openhis/web/basedatamanage/appservice/IOrganizationAppService.java @@ -15,11 +15,16 @@ public interface IOrganizationAppService { * * @param pageNo 当前页码 * @param pageSize 查询条数 + * @param name 科室名称 + * @param typeEnum 科室类型 + * @param classEnum 科室分类 + * @param sortField 排序字段 + * @param sortOrder 排序方向 * @param request 请求数据 * @return 机构树分页列表 */ - Page getOrganizationTree(Integer pageNo, Integer pageSize, String sortField, String sortOrder, - HttpServletRequest request); + Page getOrganizationTree(Integer pageNo, Integer pageSize, String name, Integer typeEnum, Integer classEnum, + String sortField, String sortOrder, HttpServletRequest request); /** * 机构信息详情 diff --git a/openhis-server-new/openhis-application/src/main/java/com/openhis/web/basedatamanage/appservice/impl/OrganizationAppServiceImpl.java b/openhis-server-new/openhis-application/src/main/java/com/openhis/web/basedatamanage/appservice/impl/OrganizationAppServiceImpl.java index da6b786f..cf130391 100644 --- a/openhis-server-new/openhis-application/src/main/java/com/openhis/web/basedatamanage/appservice/impl/OrganizationAppServiceImpl.java +++ b/openhis-server-new/openhis-application/src/main/java/com/openhis/web/basedatamanage/appservice/impl/OrganizationAppServiceImpl.java @@ -1,5 +1,6 @@ package com.openhis.web.basedatamanage.appservice.impl; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.OrderItem; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.core.common.core.domain.R; @@ -38,11 +39,25 @@ public class OrganizationAppServiceImpl implements IOrganizationAppService { private AssignSeqUtil assignSeqUtil; @Override - public Page getOrganizationTree(Integer pageNo, Integer pageSize, String sortField, - String sortOrder, HttpServletRequest request) { - // 查询机构列表 + public Page getOrganizationTree(Integer pageNo, Integer pageSize, String name, Integer typeEnum, Integer classEnum, + String sortField, String sortOrder, HttpServletRequest request) { + // 创建查询条件 + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + + // 添加查询条件 + if (StringUtils.isNotEmpty(name)) { + queryWrapper.like(Organization::getName, name); + } + if (typeEnum != null) { + queryWrapper.eq(Organization::getTypeEnum, typeEnum); + } + if (classEnum != null) { + queryWrapper.eq(Organization::getClassEnum, classEnum); + } + // 创建Page对象 Page page = new Page<>(pageNo, pageSize); + // 处理动态排序(仅当排序字段有效时才添加排序条件) if (sortField != null && !sortField.isEmpty()) { // 校验排序字段是否为Organization实体中的有效字段(防止非法字段) @@ -51,11 +66,12 @@ public class OrganizationAppServiceImpl implements IOrganizationAppService { String underlineField = camelToUnderline(sortField); // 默认为升序,若指定desc则按降序 boolean isAsc = sortOrder == null || "asc".equalsIgnoreCase(sortOrder); - page.addOrder(isAsc ? OrderItem.asc(underlineField) : OrderItem.desc(underlineField)); + queryWrapper.last("ORDER BY " + underlineField + " " + (isAsc ? "ASC" : "DESC")); } } - // 执行分页查询(此时排序条件会被应用) - page = organizationService.page(page); + + // 执行分页查询 + page = organizationService.page(page, queryWrapper); List organizationList = page.getRecords(); // 将机构列表转为树结构 diff --git a/openhis-server-new/openhis-application/src/main/java/com/openhis/web/basedatamanage/controller/OrganizationController.java b/openhis-server-new/openhis-application/src/main/java/com/openhis/web/basedatamanage/controller/OrganizationController.java index f503d9f2..6f2be234 100644 --- a/openhis-server-new/openhis-application/src/main/java/com/openhis/web/basedatamanage/controller/OrganizationController.java +++ b/openhis-server-new/openhis-application/src/main/java/com/openhis/web/basedatamanage/controller/OrganizationController.java @@ -41,15 +41,24 @@ public class OrganizationController { * * @param pageNo 当前页码 * @param pageSize 查询条数 + * @param name 科室名称 + * @param typeEnum 科室类型 + * @param classEnum 科室分类 + * @param sortField 排序字段 + * @param sortOrder 排序方向 + * @param request 请求对象 * @return 机构分页列表 */ @GetMapping(value = "/organization") public R getOrganizationPage(@RequestParam(value = "pageNo", defaultValue = "1") Integer pageNo, @RequestParam(value = "pageSize", defaultValue = "100") Integer pageSize, + @RequestParam(value = "name", required = false) String name, + @RequestParam(value = "typeEnum", required = false) Integer typeEnum, + @RequestParam(value = "classEnum", required = false) Integer classEnum, @RequestParam(value = "sortField", required = false) String sortField, @RequestParam(value = "sortOrder", required = false) String sortOrder, HttpServletRequest request) { Page organizationTree = - iOrganizationAppService.getOrganizationTree(pageNo, pageSize, sortField, sortOrder, request); + iOrganizationAppService.getOrganizationTree(pageNo, pageSize, name, typeEnum, classEnum, sortField, sortOrder, request); return R.ok(organizationTree, MessageUtils.createMessage(PromptMsgConstant.Common.M00009, new Object[] {"机构信息"})); } diff --git a/openhis-ui-vue3/src/views/basicmanage/organization/components/api.js b/openhis-ui-vue3/src/views/basicmanage/organization/components/api.js index 87573e51..6c89959c 100644 --- a/openhis-ui-vue3/src/views/basicmanage/organization/components/api.js +++ b/openhis-ui-vue3/src/views/basicmanage/organization/components/api.js @@ -4,7 +4,7 @@ export function getList(queryParams) { return request({ url: '/base-data-manage/organization/organization', method: 'get', - param: queryParams + params: queryParams }) } diff --git a/openhis-ui-vue3/src/views/basicmanage/organization/index.vue b/openhis-ui-vue3/src/views/basicmanage/organization/index.vue index 03542fe8..ec5524de 100644 --- a/openhis-ui-vue3/src/views/basicmanage/organization/index.vue +++ b/openhis-ui-vue3/src/views/basicmanage/organization/index.vue @@ -1,5 +1,42 @@ - + + +
+ +
@@ -191,8 +232,15 @@ import { const { proxy } = getCurrentInstance(); const loading = ref(true); +const showSearch = ref(true); const organization = ref([]); -const queryParams = ref({}); +const queryParams = ref({ + pageNo: 1, + pageSize: 10, + name: undefined, + typeEnum: undefined, + classEnum: undefined +}); const open = ref(false); const form = ref({ id: undefined, @@ -305,6 +353,21 @@ function getDictLabel(value) { return dict ? dict.label : ''; } +/** 搜索按钮操作 */ +function handleQuery() { + queryParams.value.pageNo = 1; + getPageList(); +} + +/** 重置按钮操作 */ +function resetQuery() { + queryParams.value.name = undefined; + queryParams.value.typeEnum = undefined; + queryParams.value.classEnum = undefined; + queryParams.value.pageNo = 1; + getPageList(); +} + function getPageList() { loading.value = true; getList(queryParams.value).then((res) => {